Fix header of ImportLibrary
Refactor uploadFile to FileTransfer

The uploadFile method has a number of responsibilities
that were not easily modifiable. Rather than insert
further `if (symlink) {} then {}` complications, its
been extracted behind the new `FileTransfer` interface
to permit others to inject their own logic.
Add trivial log statement
Refactor to use TransferState

The number of parameters passed to the `transfer` method
was daunting at best. Further, much of the uploadFile method
was doing logging so that moving the execution into the state
class, the FileTransfer implementors can be ignorant of most
of the arguments.
Refactor out AbstractFileTransfer for SymlinkFileTransfer

The rest of the reusable logic from uploadFile has now been
moved to AbstractFileTransfar and re-used by the new
SymlinkFileTransfer class.

Several remote-access methods were needed in the ImportLibrary
itself, though these could perhaps live in a more general
gateway-style utility.
Implement command-line passing

The following options are now all available
for choosing which transfer method to use:

```
 bin/omero import -t upload
 bin/omero import --transfer upload

 bin/omero import -t symlink
 bin/omero import -- -t symlink

 bin/omero import -t your.class.name.Here
```
Use an enum for the factory method
Improve javadoc for new classes
Move FileTransfer to the transfers package
Refactor from SymlinkFT AbstractExecFT
Introduce afterSuccess in the FileTransfer interface

A simple `mv` command is not possible since 1) the file
must be present for subsequent readds and 2) it's not
safe to remove the file until the import has completed
successfully.

Now, users of the `FileTransfer` API have the responsibility
of calling `afterSuccess` once the `ImportLibrary` has done
its work. An exception may be thrown if cleanup is not
possible.
Add simple package-info.java
Update CLI help string
Gather all used files for possible deletion
Hide Advanced arguments behind --transfer-help

```
$ bin/omero import -- --transfer-help
...
Advanced arguments:
  --transfer=ARG    File transfer method
      Examples:
       -t upload           # Default
       -t ln               # Use hard-link. Locally only!
       -t ln_rm            # Caution! Hard-link followed by rm. Locally only!
       -t ln_s             # Use symlnk. Locally only!
       -t some.class.Name  # Use a class on the CLASSPATH

ex. importer-cli --tranasfer=ln_s foo.tiff

Report bugs to <ome-users@lists.openmicroscopy.org.uk>

```
Move to File.separatorChar for path building
Add Java7 TODOs
Add CommentAnnotation(ns=`.../fileTransfer`) with class of FT

With this change, an annotation is added to the `Fileset` object
on import describing which `FileTransfer` implementation was used.

Use of the default `UploadFileTransfer` is ignored; otherwise, the
FQN is stored as the content of the annotation. If we decided to
move to subclasses of `Fileset` these values should suffice.

Representative output after an import includes:

```
ome2=> \x
ome2=> select discriminator, id, ns, textValue from annotation order by id desc limit 2;
-[ RECORD 1 ]-+---------------------------------------------------
discriminator | /type/OriginalFile/
id            | 3102
ns            | openmicroscopy.org/omero/import/logFile
textvalue     |
-[ RECORD 2 ]-+---------------------------------------------------
discriminator | /basic/text/comment/
id            | 3101
ns            | openmicroscopy.org/omero/import/fileTransfer
textvalue     | ome.formats.importer.transfers.SymlinkFileTransfer
```
Fix 'tranasfer' typo
Merge pull request #2020 from joshmoore/rebased/develop/file-transfer

Inplace Import via SymlinkFileTransfer (See #11573) (rebased onto develop)