Refactor functionality

* Make rules and types pluginable
  * Every instance has unique RULES and TYPES objects to set custom rules
* Make the module export multiple instances by calling it as a function before use
* Add examples to readme for new rules and types plugins
* Return an object instead of a boolean
  * The object always has a boolean `valid` property
  * The object always has an errors array
* Refactor all tests
0.0.2