These changes make it possible to set custom options when responding to
inline queries, as described on
https://core.telegram.org/bots/api#answerinlinequery.
It also includes all the (non-cached) inline result types as described
at https://core.telegram.org/bots/api#inlinequeryresult.
Some remarks:
* The internals of sendCommand have changed. It now expects a
JSON-serializable object. Instead of doing GET requests with
URL-encoded query parameters it now POSTS JSON directly.
* Because of the above, sendFile() has changed as well. It now expects a
* `map[string]string` which it will internally convert to URL encoded
form values.
* Respond has been deprecated in favor of the new AnswerInlineQuery
function. It is only kept for backward compatibility.
* A dependency on https://github.com/mitchellh/hashstructure has been
introduced in order to generate automatic IDs for inline results.
* Chage signature of "Destination()", because we need send username in "chat_id" when
sending message to channel.
* By telegram API document, chat id is "not exceeding 1e13 by absolute value" which
needs int64 to store it.
in bad network-speed environment. And message will be put to channel in
same order we receive from API call.
* Bot.Listen(): Use only 1 goroutine. Do really long polling, not
repeatly do short polling.
* API.go: getUpdates(): as doing long polling, channel is not required.