Sort headers
Use opaque classes to remove dependencies

This potentially speeds up compilation
Make the header being implement always the first
Merge pull request #7 from jeroenk/header-reorg

Reorganisation of the header inclusion