Create investment route

Fixes #16

Have started adding interfaces for main structs in use. This means they can
be replaced by different implementations for testing.