[AS7-462] Patching subsystem

* add tests for patch tasks related to modules
* make sure the *patch config* and *patch* schemas are in sync. Both
  accepts multiple <applies-to-version> element for <one-off> and
  <cumulative> patch
* raise an exception if a one-off patch has defined a resulting-version
* refactor PatchBuilder to have a more fluent API
* refactor ModuleTaskTestCase to use directly the PatchingTaskRunner
* add test for patching task related to file content
* simplify the FileRemoveTask by copying the backup and hashing the
  target in separate steps
* split assertions and test helper methods
[AS7-462] Close the streamwriter to ensure it flushes to the file

Implement generating a patch from specified content
[AS7-462] fix byte arrays equality test
[AS7-462] add test for misc update patch task
[AS7-462] Patching service

* add tests for updating user-modified misc content
  for different content verification policies
[AS7-462] Patching service

* add tests for removing user-modified misc content
  for different content verification policies
[AS7-462] allow rollback of multiple patches at once
[AS7-462] Don't allow multiple applies-to-versions for a CP

Fix maxOccurs
[AS7-462] add separate bundle patching task
[AS7-462] fix ContentModification fixtures
add test for cumulative patches
add test to rollback a CP
[AS7-462] Patching service

* when a patch is applied, persist in the patch *history* dir:
  - patch.xml - the applied patch config
  - rollback.xml - the patch to apply to rollback the applied patch
* test that rollback of a CP will also rollback one-off patches applied
  on top of the CP
* when a patch is rolled back, delete all resources associated to any
  patches also rolled back by the operation
* backup AS7 configuration directories when a patch is applied
* add test to apply and rollback a one-off patch
* restore configuration files when a patch is rolled back
[AS7-462] fix api changes
[AS7-462] split finish tasks for apply and rollback. Defer cleanup until we know the controller keeps the result
[AS7-462] Patching service

* add module-path runtime read-only attribute
* log the module path when the patch info service is started
* Fix rollback operation parameters
* Flag the server with reload-required if the rollback operation is
  successful
* prevent to apply/rollback a patch if such operation has already been
  done at runtime and the process has not been reloaded
* add org.jboss.modules to the patching module dependencies
  (required to run the patching.tool module as an app)
* add JBoss module org.jboss.as.patching.generator to run the patch
  generator tool
[AS7-462] throw an exception instead of returning the failed result
[AS7-462] make dependency on patching optional
[AS7-462] update run scripts command
[AS7-462] use the PatchTool instead of the runner
[AS7-462] initalize the controller extensions in standalone
[AS7-462] Patching service

* fix jboss-cli.sh script
* add CLI handler for patch command
* update CLI to register additional command handlers using a
  CommandHandlerProvider's ServiceLoader
* move the PatchHandler to the patching module
* add org.jboss.as.patching.cli as an optional dependency of
  org.jboss.as.cli
* make the patch command work in domain mode using an additional --host argument
* build newModuleRootFile using newRoot
* move byte[]<->hex string methods to HashUtils
  and remove duplicate code from generator's and runner's PatchUtils
* move all methods to compute checksum into HashUtils
  and use it in both patching generator and runner
* move all I/O utilities to IoUtils to use the same
  methods in both generator and runne
* move all zip-related methods into ZipUtils
  and use it in generator (to zip) and runner (to unzip)
* skip .jar.index files when computing a checksum since these files
  are generated at runtime and are not part of a AS7 pristine
  installation
* fix BASE comparison
* fix NPE if the exception message is null