Broke the project into various sub assemblies

The goal I have here is to prepare the structure so that I may start
using pieces of this library without having too many unnecessary
dependencies