Allow the Cache Option to Set the Cache Object

It can be useful to use the same `peg$cache` object between parser runs. This modifies the generated javascript for the parser so that when the `cache` option is an object, that object is used instead of a new one. The parser has also been changed to include the start position of every cache entry.