Tokens&comments updates

Made token & comment format more compatible with Mozilla-style node locations (as used elsewhere in code) and with Esprima's token & comment formats.

This enforces conformance between locations in different types of generic objects (tokens, comments and nodes) and simplifies usage with other tools like Estraverse / Escodegen.

Also, allowed passing arrays instead of functions in `onToken` and `onComment` so comment attachment was slightly simplified (please take look at updated example in README).
Since we only support functions and strings for these options, I'd avoid the extra function and just check for a `.length` or a `.call` property.