Add better path parser and repository discovery

This is a commit with compile errors.
Rewrite ShowPath() to ignore ?file queries
Use path.Join() to sanitize SplitRepository()

Note that because all URLs will be parsed without the trailing slash, we
will need a different way to determine directories.

- #40
Merge branch 'f.path-shuffle' into development

* f.path-shuffle:
  Use path.Join() to sanitize SplitRepository()
  Rewrite ShowPath() to ignore ?file queries
  Add better path parser and repository discovery
Patch directory listing and repository discovery
Version 0.4.7
Add install script

The install script will install Grove to '/usr/bin/' and its resources
to '/usr/share/grove/'. It has the option to skip the build process, and
also to build with any flags or compilers.

This commit will also add the "fmt" package to the imports, but other
dependencies already import this. This is so that Grove can report to
stdout, rather than stderr.
Remove irrelevant Makefile

Frankly, I can't imagine why I wrote it in the first place.

- close #19
Fix startup script for general usage

The install script will, in this commit, copy the startup script to the
default location of /etc/init.d/grove, so that it can be invoked with
'service grove <command>'.

- close #16
Cleaned up install script (with option changes)

The install script is now invoked either as './install.sh --build' (or
'-b') to invoke the compiler, or './install.sh' to skip that step
entirely.

This commit will also clean up the output somewhat, and make it more
readable.
Merge branch 'development' into f.file-ui
Change previous li class to li-long

This allows general invocations of <li> while still allowing Grove to
make use of <li class="li-long">. Thanks @dylwhich.

- close #48
Add file/directory distinction with tree/ & blob/

This means that, to access a file in Grove, one can refer to
http://host/repository/blob/path/to/file, and to access a directory, one
can refer to http://host/repository/tree/path/to/directory. They will
render correctly.
Remove unnecessary debugging println()