adding support to provide custom parse opts and stop esprima from throwing on script level returns

This PR is in two parts.

I put them separately if for whatever reason you have a problem with the 2nd one. The most important is the first commit.
However the current implementation has incorrect location information for the first line which is a problem if  you want to use detective in order to **replace** requires instead of just finding them.

`tolerant: true` stops esprima from throwing and is a better solution IMO than wrapping the code inside a function.

1. adding support to provide custom parse opts
  - necessary if you want parser to include extra info like location info in the AST

2. esprima tolerant: true and removing wrapper
  - tolerant parsing does not throw on script level returns
  - enforcing this option for parse makes the function wrapper no longer needed
  - location info for first line is now correct (see test/parseopts.js)

### Note

`0.6` currently fails on travis (certificate error)
if you want I can change it to support `0.8` and `0.10` instead and add that to this PR.