Refactor the project into separate api/impl artifacts for both the data and service layers.

This is a significant refactoring of the project layout into separate api/impl artifacts for each of the layers. The service impl still has a test dependency on the data-impl artifact because there are service class component tests that write to the database. These probably should be deleted.