New configuration parser

* Remade the configuration parser to be more flexible and handle per-pool algorithm and gpu options as well as future modules that might be added. 
* Added profiles to ease defining settings per pool and have multiple pools reference the same set of options.
* Added new API calls to support the above changes.
* Cleaned up some of the code and started breaking out of single large files.
* Added/Cleaned up some of the documentation for configuration and API.

This update addresses a few bugs found while testing v5_0 as well as the following issues: 
#256
#253
#249