moved arg parser into its own class to hide away the parsing.  Adding targetted unit tests for how the parsing should work so in the future we can swap out the parsing library and we have a test suite to work to.  Need to look at the fact that if you pass a switch that does not exist it blows up
Merge branch 'develop' into crane-unknown-command-defect

Conflicts:
	src/crane.core.tests/crane.core.tests.csproj
can now handle when the user passes in a command that is not known.  An exception is thrown which is then caught and reported back to the user.  This is a much cleaner approach than what I was initially going to do.  It also means the unknown command logic is limitied to the command resolver.  Which makes sense as the command resolver's job is to resolve commands
ncrunch now fully working for unit and integration tests.  NOTE you have to include the crane.templates folder in your copy files in your ncrunch config for this to work