Add command name prefix matching

A command can now be invoked with a prefix of its own name, assuming that
prefix is unambiguous (ie it isn't also a prefix of any sibling command's
name).
Reset root command lists in testing

This fixes some issues that appear when testing prefix invocations. Since the
root command lists weren't being cleared, the list would persist between
tests, so there would be multiple instances of each command. Then, if you
tried to match a prefix of one of those commands, you'd get two matches (one
for each instance) and the command would fail.

Resetting the root command lists prevents them from persisting between tests,
resolving this issue.
Add basic test for prefix matching
Test behavior for subcommand with same name as root command

If, for some reason, you have an application with some name "foo", and your
app has a subcommand "foo", cobra should behave properly when you call
"foo foo", and it should also behave if you call "foo f".

These changes verify both of these cases and ensure cobra responds properly.
Documentation update
Fix small typo
Fix grammar in readme
Cobra behavior is now more consistent. Invalid flags cause Usage to be printed.
Remove "::" from output. Fixed #4
Test confirming fixed #11
Adding support for --help
Support for flags before commands
Add support for an InitializeConfig method as defined on Cobra by the user
Adding "OnInitialize()" method instead of directly setting a property. Now can have multiple initializers.
Fix typo mistake on README
Print Long description when printing Help, fixes #20
Fixed typo :D
changed help flag setup to use PersistenFlags so -h will be supported
Replace prefix matching with aliases
adding support for prefix matching against aliases & names