archive: allow submodule recursion on git-archive

When using git-archive to produce a dump of a
repository, the existing code does not recurse
into a submodule when it encounters it in the tree
traversal. These changes add a command line flag
that permits this.

Note that the submodules must be updated in the
repository, otherwise this cannot take place.

The feature is disabled for remote repositories at
this time as the remote working directory is not
correctly set, even if present.

There is some discussion about improving submodule
discovery that would allow the archiving of submodules
to be done under all possible conditions in future. The
functionality of this patch may be re-implemented but
the syntax will be identical posing no upgrade issues.

Two additional fields are added to archiver_args:
  * submodule_recurse  - a boolean indicator
  * treepath - the path part of the tree-ish
               eg. the 'www' in HEAD:www

The latter is used within the archive writer to
determin the correct path for the submodule .git
file.

Includes improvements from original patch:

Coding style changes
Removed --recursive as an option
Warn on submodule failure instead of die
Added submodule archive test
Streamlined prefix/name/path code handling in parse_treeish_arg()

Signed-off-by: Nick Townsend <nick.townsend@mac.com>
Additional git-archive tests

Interplay between paths specified in three ways now tested:
* After a : in the tree-ish,
* As a pathspec in the command,
* By virtue of the current working directory

Note that these tests are based on the behaviours
as found in 1.8.5. They may not be intentional.
They were developed to regression test enhancements
made to parse_treeish_arg() in archive.c

Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Nick Townsend <nick.townsend@mac.com>