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.
Rather than use filepath.Glob, it would perhaps be better to use f.Readdirnames,
which will also give an error reporting if the directory isn't readable for some reason,
is more direct, and about the same amount of code:

	f, err := os.Open(fileName)
	defer f.Close()
	for {
	    names, err := f.Readdirnames(100)
            if err != nil {
                 return fmt.Errorf("error reading directory %q: %v", fileName, err)
            }
	    for _, name := range names {
	         if err := writeContents(filepath.Join(fileName, name), tarw); err != nil {
	              return err
	         }
	     }
	}

if you do that, you could open the file at the start of the function
(you're going to open it whether it's a file or directory), and
use (*os.File).Stat rather than os.Stat.