feat(changelog script): Have script produce markdown, add settings

This completely revamps the changelog script. It now generates links to
the relevant commits in the format of:

     - [`sha-1 hash`](link on github) subsystem: commit message

Additionally, the types of commits shown in the changelog and the root
repository for the link may be set at runtime. Example:

    $ TYPES='feat(;Features' ./generate-changelog.sh v0.9.0
    $ REPOROOT="http://github.com/Xe/deis" ./generate-changelog.sh v0.9.0

This is purely cosmetic and to enable this script to be reused more
easily. The script is now documented and sourceable as a library for
further reuse.

REBASE EDIT: Link generation is deduplicated (commit was rebased) so that
the commit message is no longer a link to the commit, only the commit hash
is. This also no longer uses a temporary file and uses bash command
output redirection as a backwards pip to directly pull the changes from
git into a while loop. Thanks again @bacongobbler for the guidance on this
latest rebase.

Technique found here: http://linuxshellaccount.blogspot.com/2008/08/using-bash-to-feed-command-output-to.html