Updated a lot of the classes for implementing the workload optimization
at runtime.

Space4Cloud.java:
- Now the robustness check works again, and it uses the new
configuration system. It also should recover a previous run!

Configuration.java:
- `WORKING_DIRECTORY` isn't final anymore, allowing the robustness test
to work again.
- 4 variables have been added to allow the same test to be configured,
plus a method for checking if an external file has the same
configuration of the actual configuration is there now:
`sameConfiguration(file)`.
- `loadConfiguration(file)` now uses `getProperty(key, defaultValue)`
instead of `getProperty(key)`, using the defaultValue instead of null if
the key isn't found in the configuration file. The `defaultValue` every
time is the actual value already set. This will make it slower, but at
least it will now accept incomplete configuration files with little to
no problems.
- Fixed some methods with the enumerations, and initialized the
variables using them.
- Now it also stores and recovers the `SSH_HOST` from the configuration
file.
- A new flag, `REDISTRIBUTE_WORKLOAD`, has been added.
- 5 new flags have been added for using and configuring the Private
Clouds!

ConfigurationWindow.java:
- The fields show the values in the actual configuration now, calling
the new `loadConfiguration()` method, which calls in turn the
`loadConfiguration()` methods for each panel.
- Now there's a new panel, that is being enabled when selecting the
robustenss check.
- The frame now has a name, and its position should always be in the
center of the screen. Also, it is bigger now.

OptimizationConfiguration.java:
- The `Configuration.SSH_HOST` is now exposed in the gui.
- A new flag for distributing the workload has been added, to in fact
redistribute the workload if the solution is multiprovider. The details
for the SSH connection are now shown also if this check is enabled.

RobustnessConfigurationPanel.java:
- New class, implements a panel for configuring the robustness check.
Note that also the optimization panel is needed, because those
configuration are needed for each of the robustness checks.

FunctionalityPanel.java:
- `loadConfiguration()` now won't consider a new "null" functionality or
solver.
- Now there are the check box and textfield for configuring the private
cloud.

Logger2JFreeChartImage.java:
- The `save2buffer(Dimension)` has been modified to show smaller fonts
for a better readability.

OptimizationProgressWindow.java:
- The frame should always show in the center of the screen, and it is
bigger.
- There's a tab for each provider now, showing the details of the
solution for each of them.

OptEngine.java:
- A new field saves the parameter `batch` for the constructor: this is
now saved because if we're not doing batch we'll show the solution using
the new `SolutionWindow` class.
- A new field, `bestSolutionUpdated`, is saved every time the best
solution is changed. To reflect this behavior,
`updateBestSolution(Solution)` was also changed. This is only used for
the multiprovider problem, for now.
- Attention now: `InternalOptimization` and `descentOptimize` now don't
call the methods `updateBestSolution` and `updateBestLocalSolution`! We
still call them later, so there's no need for them.
- A new method is here in town: `considerPrivateCloud`, that is called
only when the flag associated is enabled.
- Two new methods are here:
`maximizeWorkloadPercentagesForLeastUsedTier` and
`setWorkloadPercentagesFromMILP` for redistributing the workload
percentages, and they are called by the `optimizeMultiprovider` method.
- The method `changeWorkload(Solution, int, double)` changes the
workload percentage of a given solution at a given time instance.

pom.xml:
- There's a new dependency in town: xml-apis! This is for fixing a
problem with the new `SolutionWindow` gui.

SolutionWindow.java:
- This new class shows the details about the given `SolutionMulti`
object.

SolutionMulti.java:
- `setFrom(File, File)` now also works even if the first file (the
solution) is null, setting only the information found in the given
multicloudextension file.
- A `privateCloudSolution` field is now here to save the private cloud
solution (because it can't stay with the others sadly). A getter and
setter are here too.

UsageModelExtensionParser.java:
- Fixed a problem in the `parse` problem (the resourcemodelextension now
has the hours from 0 to 23, so we don't need to subtract 1 for the array
index).

MoveChangeWorkload.java:
- The method `modifyWorkload(File, int, double)` allows for changing the
workload percentage of only a time instant, without changing all of
them.
- Now there are two new methods, `modifyWorkload(double[])` and
`modifyWorkload(int, double)` that don't require the usage model
extension file as a parameter: it is recovered using the `Configuration`
object.
ignored line
temp per merge
tmp before merge
Merge branch 'multicloud'
still in progress

Conflicts:
	.classpath
	META-INF/MANIFEST.MF
	build.properties
	config/DBConnection-local.properties
	pom.xml
	src/it/polimi/modaclouds/space4cloud/chart/Logger2JFreeChartImage.java
	src/it/polimi/modaclouds/space4cloud/gui/FunctionalityPanel.java
	src/it/polimi/modaclouds/space4cloud/gui/RobustnessConfigurationPanel.java
	src/it/polimi/modaclouds/space4cloud/gui/SolutionWindow.java
	src/it/polimi/modaclouds/space4cloud/mainProgram/Main.java
	src/it/polimi/modaclouds/space4cloud/mainProgram/Space4Cloud.java
	src/it/polimi/modaclouds/space4cloud/optimization/MoveChangeWorkload.java
	src/it/polimi/modaclouds/space4cloud/optimization/OptEngine.java
	src/it/polimi/modaclouds/space4cloud/optimization/PrivateCloud.java
	src/it/polimi/modaclouds/space4cloud/optimization/solution/impl/SolutionMulti.java
	src/it/polimi/modaclouds/space4cloud/utils/Configuration.java
	src/it/polimi/modaclouds/space4cloud/utils/RussianEvaluator.java
Merge multicloud - before testing
Merged with multicloud, tested single cloud assement and optimization on
BOC case study