Refactor the parser to handle more use-cases

Carrying on the conversation started in #3, I've refactored the parser to handle more use-cases and better match default behaviour (based off of [bkeepers/dotenv](https://github.com/bkeepers/dotenv)).

A summary of the changes:
* Use a regex for line matching
* Substitute environment variables in a value
* Correct behaviour between no quote/single quote/double quote values
* Handle correct escaping of values
* Add in lots of tests