catch esprima parsing errors and prepend filename

If detective throws (because esprima failed to parse) we want to know
what file we were processing.
only set opt.cache if one has not been provided.

Thanks @substack

closes #5