preserve file mode when copying files from Git to CVS

bigitr.util.copyFiles now preserves file modes, which preserves
file modes when copying files from Git to CVS, and when copying
"skeleton" files into place.  (File modes were already preserved
when copying files from CVS to Git due to the use of the
bigitr.util.copyTree.)

Fixes #14
refactor to remove redundant file copying code
Remove deprecated "git branch --set-upstream" usage from test

Changed test to use the normal "git push --set-upstream" instead.

Fixes #13
remove unnecessary bigitr.util.copyTree

Previously, the only use of bigitr.util.copyTree was unnecessary
because bigitr.util.copyFiles was not only available but preferable.
Therefore, bigitr.util.copyTree is removed.
No longer delete auto-ignored files in some cases

Previously, deletions caused by .gitignore and .cvsignore were mirrored
to the other system on sync; if a file in CVS was not in Git due to a
line in .gitignore, when Git was exported to CVS, the files was deleted.

Now, for a subset of files and specifications documented in README.md,
a file matched in .gitignore will not be deleted from CVS on export
from Git to CVS, and a file matched in .cvsignore will not be deleted
from Git on import from CVS into Git.

Fixes #16
Add support for import/export of cvs mainline

CVS treats the mainline branch as a special case, insofar as the
commands to work with it do not support using the '-r' flag. This change
adds special handling for symbolic branches, using @{branch name}. For
the mainline branch in CVS, we use @{trunk}. This enables repository map
configurations like:

    cvs.@{trunk} = master
    git.master = @{trunk}

Replaces #12
Fixes #11