Use ginkgo and gomega for testing

- Big change, rip out all the things, make them smaller and more
  testable
- Prefer concrete structs eg config_api.DataSetMetaData to maps