Enforce code formatting

Ref. #36 

* Provide documentation for contributors
* Provide a script to reformat code
* Fail build if format is not valid
* If possible, warn on commit (but don't prevent a commit)