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`.
Add all grid properties as variables

For use in the templates.xml file, all of our
properties must also be available as variables
before loading the templates.
Revert "memory.py: add support for 'append'"

This reverts commit 16cf2938898e4b935e73f516fb69a123245543d4.
Return map from get_memory_settings

The `<option/>` element does not handle splitting
on whitespace, so there must be a number of properties
rather than one large one.
Append 'm' for values in MB
Rename 'hardcoded' to 'manual'
Fix string percents