Adds license and package info
Refactors types to be more generic
Cleans up documentation and file structure.

The amount of work completed means I am also bumping the version number up.