Massively overhauled the entire "framework"

* `multigit` is back to a function. I really
  wanted the `snap` functionality to be included in core `multigit`
  instead of an external `.sh` file.
* `multigit` subcommands (eg `add`, `rm`) are now defined as functions
  prefixed with `mg-` (eg `multigit-add`, `multigit-rm`). This lets users write
  their own `multigit` extensions by just defining a function. NOTE:
  `multigit` extensions are *not independent* of `multigit`! They must be
  called by `multigit` or they'll probably break the `~/.multigit`
* Code has been separated into 4 separate files:
  * `multigit.sh`: just sources the rest of the code
  * `main.sh`: primary `multigit` function / framework
  * `builtins.sh`: included `multigit` extensions (`add`, `rm`, `list`, `go`, `help`)
  * `util.sh`: utility functions (`dirExists`, `gitExists`)