MDLSITE-2578 release.sh - no longer can you accidentally release!

I've added several arguments to the release script to better control things.
I've also pulled in Eloy's change to push from the local repo heads rather than the refs.

The options I've introduced are:
  -c, --confirm
      This script requires that you confirm the action you are about to take.
      By giving this argument you acknowledge you understand what is going to
      be done and are happy for this script to just get on with it, without
      prompting you to check.
  -n, --dry-run
      Do everything except actually send the updates.
  -q, --quiet
      If set this script produces no progress output. It'll let you know when 
      its finished however.
      You must confirm [-c|--confirm] if using this option.
  -h, --help
      Prints this help and exits.
  --no-tags
      By default tags are pushed as well, this prevents that from happening.
      I hope you know what you're doing!


I've not yet tested the actual release or dry-run option - really I am too scared to test it mid-integration.
Best we test this when everything is blue and we're ready to push - that way it if breaks and releases we're not in trouble.

Many thanks
Sam