Improved directory structure.

Changed the directory structure to better reflect the different
components within this gem. Ultimately, it may make the most sense to
use git submodules for some of these components (and third party
dependencies).