Adding a command line interface

Docs updated, PEP8 passing, initial signature done and working.

Issues as I see it:
- Will the *nix return codes work ok for the majority of CI systems? (Jenkins, Buildbot, Travis, etc)
- Could we do something better with the Validation errors? Return a list of errors? Return the yaml file with highlighted parts as to where the error is?
- Testing - any ideas on how best to test this?
And this should be `return 1`