NB: This is required for whatever API we finally ship, it is not about making
the API better for users, but about making it more supportable for us.
1. Use the PIMPL pattern (http://en.wikipedia.org/wiki/Pimpl) so that private
implementation classes do no need to be exposed in public headers. Break any
other un-necessary header dependencies from public heaeers.
2. Move all (and only) public headers from qpid/src to qpid/include.
3. Build all "pure-client" tests and samples with -Iinclude and NOT -I src.
further and provide a full Pimpl client API to provide a binary compatibility
safeguard. (http://en.wikipedia.org/wiki/Pimpl for definition of Pimpl) We
should use shared_ptr to get normal copy semantics and automated memory
management and templatize as much repetative code as possible.
Related JIRAS: https://issues.apache.org/jira/browse/QPID-342