[ENSCORESW-595]. Creating a new export command.

This has been adapted from another developer's code. It is being
editted to allow for more of a user interactive mode. We include
checking if submitted refs are part of the current branch. We also
make sure that the directories are resolved fully and store our
config in the git repository's config. The original pushed everything
into a file.
[ENSCORESW-595]. Fixed the script to push and commit changes to CVS.

Currently assumes both Git & CVS are tracking the right branches which means
one repo per push. This probably is not a bad thing otherwise weird things could happen.
[ENSCORESW-595]. Do parent sniffing to select the correct commit.

Doing the rev-list from our last commit will give all commits that happened
since that commit. This is not limited to a single branch and does not include
the parent commit. Our solution is to use rev-list and look for the most
leftly reported commit. Experience shows this will be the branch the merge was
pushed into (master). We can then skip any commit that is not a child
of our last pushed hash.

Subsequently post CVS commit our last pushed hash becomes the commit we have just
sent in.

Also we have lots more documentation about the commit process and what is allowed
[ENSCORESW-595]. Switched to using --first-parent for history

Seems that using --first-parent rather than --parents was the answer. This
option lets me see the first parent of a merge commit meaning I only get
to see a single track of history. That also means we do not need to check
the parent is right because it must be. Simplification and happiness
adding a new merge command mimicking what anacode have to do
removing the need for --ff-only since this is different to the merge strategy needed when bringing in long topics
adding in new code to ensure the remote is clean
adding in more prompts and giving more chance to abort them
renamed the command
example log command did not work with a user specified branch
new command for working with branches already pushed
making the code executable
missed a dash
making sure when we call merge we mean git merge not *nix merge
Automatic merging of dev

* dev:
  making sure when we call merge we mean git merge not *nix merge
  missed a dash
  making the code executable
  new command for working with branches already pushed
adding some more help options and making the target branch of the merge more configurable
typo. target is set to $2
using getopts. bit better tbh
making a better version of this. now understands multiple command lines and goes hunting for the last applicable commit hash
Few bug fixes. The wrong config key was being overwritten. We should not continually apply patches. Rolling them back when not committing is hard when it blows up.