Add contributing guide

This provides background and guidelines for code style, testing, commit formatting, etcetera.