Re wrote backup in go

Previously backup was a cmd plugin writen in bash.
Backup was implemented as a go function, still not in use.
Tests where added since the previous implementation had none.
backup package includes:
 * BackUp function, which performs the actual back up.
 * tarFiles which creates a tar or tar.gz/tgz depending
on the output file name given.
 * runCommand which is a convenience function to simplify testing
since the back up process requires calling external executable
mongoexport.
There's no point calling Output if you're just going to throw away the result.
I suggest you do something like this:

    func _runCommand(cmd string, args ...string) error {
        command := exec.Command(cmd, args...)
        out, err := command.CombinedOutput()
        if err == nil {
              return nil
        }
        if _, ok := err.(*exec.ExitError); ok && len(out) > 0 {
             return fmt.Errorf("error executing %q: %s", cmd, strings.Replace(string(out), "\n", "; ", -1))
        }
        return fmt.Errorf("cannot execute %q: %v", err)
    }

Then we'll actually see any error messages printed by the command
when it fails.