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).
> functions and strings for these options
Did you mean functions and arrays?

> just check for a .length or a .call property
`.length` won't work since it's contained in both functions and arrays, but `.call` might be good replacement. Will change.