Use mklink under Windows

In order to support in-place importing on Windows, mklink
rather than ln must be used. Rather than create new commands
like `--transfer=mklink`, the same flags (`ln` and `ln_s`)
are being used.
Fixes from jh713@cam.ac.uk

 * cmd /c is needed to call mklink from Java
 * Arguments need reversing.
Close file handle before attempting delete

@bpindelski showed that on Windows the UUID-containing
file created by checkLocation was not being properly
deleted during import. This change closes the RawFileStore
and then re-opens in order to allow in-place import under
Windows.
Print command and stdout/err on error

The stdout and stderr (which are merged) are now read
from the created Process instance if the return code
is not 0.
Silently ignore ObjectNotExistException

If `checkLocation` throws an exception, then
`cleanupUpload` will definitely throw an ONEE
since the proxy no longer exists. Cleaner would
be to null some instance variable, but due to
the possibly multi-threaded nature of the Transfer
object, we're doing something simpler here.
Remove ManagedRawFileStoreI in favor of callbacks

ManagedRawFileStoreI was not being used which meant that
closeCalled was never invoked and therefore the proxies
in `ManagedImportProcessI.uploaders` were never cleaned.
This led to `ObjectNotExistException` being thrown on a
second loading of `proc.getUploader(i)`. Rather than add
logic to create the correct subclass of RepoRawFileStoreI,
a callback interface has been added which can be used for
any implementation.
Refactor TestConfig methods for re-use
Remove unused server templates
memory.py: first classes and methods
memory.py: add hard-coded strategy
memory.py: add name to strategies

So each strategy can make decisions based on what
type of service it's responsible for, the first
ctor argument is now 'name'.
memory.py: refactor Settings.lookup method
memory.py: PercentStrategy
memory.py: handle int values in getters
memory.py: set 'option' in adjust_settings
admin.py: add memory method and templates.xml hooks

All memory settings from templates.xml have now been removed
in favor of a single `${omero.mem.NAME.option}` property which
is set during the `start(async)` and `deploy` commands by
calling memory.adjust_settings.
memory.py: add support for 'strategy' setting

This required passing a complete Settings object to the
Strategy constructor so that we could use the default
property resolution before creating the instance.
memory.py: add test_memory.json fixtures
memory.py: add support for 'append'
Calculate free/total memory with psutil/java

If available psutil will be used to check the free
and total physical memory for the system. Otherwise,
a call will be made to Java which uses the JMX OS
bean to get the same values. These are then used by
the `PercentStrategy`.