Complete refactor

* 100% test coverage
* Defensively programmed from the start
* Improved test suite
* Improved interoperability between strings, arrays and regexps
* No more undefined keys
* Removed ability to regexp outside of parameters
* Removed nested regexp inside parameters
* Updated readme

With these improvements, it'll be trivial to re-add a feature back (like regexps outside of parameters) if needed.