Initial import in new repo.

First proper commit of full refactor, with BDD test suite and unit tests.