chore(gitignore): creating git ignore
feat(commit-msg-runner): run commit-msg

Create the spec helper code to run commit-msg and collect the output.
The code in spec_helper.rb will be used to write integration tests.
feat(commit-msg): abort if called without filename

Example doco states that commit-msg must be called with a filename. If
this doesn't happen, abort with an error message.

Kernel.abort will return an error code of 1 to the OS which will stop
the commit from proceeding.
ref(run_commit_msg): use keyword args
fix(spec_helper): don't remove temp files.
feature(spec_helper): add make_file_with helper
ref(process status): run_commit_msg return status

Update run_commit_msg to return the Process::Status object after
waiting for the process to finish.
feature(commit-msg): rewrite commit message

To communicate with git the commit message file needs to be
rewritten.
feature(lower-case): lower case first line.

If the first line contains uppercase characters, change these
to lower case.
fix(status): update test to use status
feature(exit code): using global for return value
fix(failed): bug in exit logic for commit-msg
fix(commit spec): add test for exit status

Update all tests to include a test for the exit status of the commit-msg
script.

A couple of bug where hidden because the exit status wasn't being checked.
fix(commit-msg): remove nil check on first line
docs(todo): add a todo list
feat(first-line): validate first line

Check for valid feature in the first line. Also check that the firstline
has the correct format.