Apply the pimpl idiom
Move source files to `src/`
Merge branch 'develop'