text: Title: Implement black code formatting as pre-commit
  Body: In order to avoid style-related comments when discussing code with contributors, I propose that we implement the [black](https://github.com/ambv/black) python code formatter as a pre-commit requirement for development. 
  
  This will potentially have a large impact on our current code-base, so should be undertaken right before a release to ensure that we don't end up with large merge conflicts. Also for discussion:
  
  - what styles do we want to customize with black? 
  - is black in its beta stage stable enough to use with our project?
  - do we set this up as a pre-commit in GitHub/Travis/locally? 