1980: Remove duplicate log info on application startup

- Set DIRT server logging to INFO
- Update appropriate logStartupInfo
- Set logStartupInfo only for the last child application created for
`admin`, `container` so that we know the server is really started
- Set the appropriate main class for `single-node` so that
admin and container server class names are shown when the admin/container
server is started.
XD-386: Automate check for copyright/license header
XD-1120 Standardize Date/Time/TimeZone handling

* Add custom `ISO8601DateFormat` class for Jackson that supports milliseconds
* Configure REST support to serialize dates using ISO8601
* Add class `TimeUtils` to centralize any `DateFormats` or retrieval of `TimeZones`
* Support UTC as much as possible
* Polish the Shell and the Admin UI
* Add `moment.js` so that ISO8601 dates can be properly handled in the Admin UI
* Add AngularJS directive to centralize the rendering of *durations*
* Fix several tests

Jira: https://jira.spring.io/browse/XD-1120

XD-1120 Improve TimeZone config capabilities for the shell

XD-1120 UI: Add directive to render date/time values

* Ensure that date/times are show in `local` browser time

XD-1120 Convert Scheduled Date/Time to UTC

* Add disclaimer to Cron Expression stating that cron expressions are evaluated in the server timezone
* Polish form validation

XD-1120 Code Review Changes
XD-1120 Fix help text for CliOptions in ConfigCommands
WebUI: Improve help messages
XD-1983 NodeExistException on ModuleMetadata write

- Ignore ZK `NodeExistsException` on writing module metadata as this
is likely to happen when the container disconnects and reconnects
but the admin leader was not available to handle the container
departure event.
  - In this case, upon container disconnect the modules on that
container get undeployed and when the container reconnects
the `DeploymentListener` makes sure to deploy the same modules
except the fact that the ZK paths for the deployment and module
metadata already exists.

2nd commit message:

Fix code review comment

- Make sure to update the status even when `NodeExistsException`
is thrown while writing module metadata path.
Module doc generation: handle the case for 0 options
Support SSL for RabbitMQ

Follow the RabbitMQ instructions to set up SSL for rabbitmq:

https://www.rabbitmq.com/ssl.html

In application.yml, servers.yml etc...

Property `useSSL` for simple SSL (no certificate validation).

Property `sslProperties' points to a protected properties file with secrets...

````
$ cat /secret/sslprops
keyStore=file:/secret/client/keycert.p12
trustStore=file:/secret/trustStore
keyStore.passPhrase=secret
trustStore.passPhrase=secret
````

servers.yml:

````
spring:
  rabbitmq:
   addresses: 10.0.0.3:5671
   username: guest
   password: guest
   virtual_host: /
   useSSL: true
   sslProperties: file:/secret/sslprops
````

XD-1978 Polishing - PR Comments

Rename factory bean
Add asserts
XD-1978 polishing
XD-1985 : Packaging of Guava 17 results in failure to deploy mapreduce job to Hadoop 2.4 based distros
Replace hardcoded use of 15.0 for $oldGuavaVersion
XD-1985 - Guava packaging cleanup - take 2
Added stream state tests

Improved assert message
XD-1982 Add https Support to http Source

Tested as follows:

- Obtained an SSL certificate from startssl.com (free) for my domain
- Installed into a keystore along with startssl's trusted and root certs...

````
gpr@testserver:~/Documents/startssl$ cat testserver.pem sub.class1.server.ca.pem ca.pem > chain.pem
gpr@testserver:~/Documents/startssl$ openssl pkcs12 -export -in chain.pem -inkey ssl.key -out testserver.pkcs12
````

- Installed the intermediate a new cert into java's cacerts...

````
gpr@testserver:/usr/lib/jvm/jdk1.7.0_51/jre/lib/security$ sudo keytool -import -trustcacerts -keystore cacerts -alias testserver -file ~/Documents/startssl/testserver.cer
gpr@testserver:/usr/lib/jvm/jdk1.7.0_51/jre/lib/security$ sudo keytool -import -trustcacerts -keystore cacerts -alias startsslsubclass1 -file ~/Documents/startssl/sub.class1.server.ca.pem
gpr@testserver:/usr/lib/jvm/jdk1.7.0_51/jre/lib/security$ sudo keytool -import -trustcacerts -keystore cacerts -alias startsslroot -file ~/Documents/startssl/ca.pem
````

(Default password for java cacerts `changeit`)

The startssl.com root cert is already in the cacerts.

Add fully qualified hostname for the server for which the cert was created to /etc/hosts

- Start singlenode
- Start shell

````
xd:>stream create foo --definition "http --https=true --secrets=file:/home/gpr/tmp/httpssl | log" --deploy
Created and deployed new stream 'foo'
xd:>http post --target https://testserver.mydomain.net:9000 --data "hello"
> POST (text/plain;Charset=UTF-8) https://testserver.mydomain.net:9000 hello
> 200 OK
````

````
17:57:11,138  INFO pool-11-thread-7 sink.foo - hello
````

XD-1982 Polishing

Rename ssl properties location field and make it consistent with rabbit.

xd:>stream create foo --definition "http --https=true --sslPropertiesLocation=file:/home/gpr/tmp/httpssl | log" --deploy
Created and deployed new stream 'foo'
XD-1986 Fix package tangle

- Move `rest.client.domain` to `rest.domain`
- Move `org.springframework.xd.rest.client.util` to `org.springframework.xd.rest.domain.util`
- Remove copyright headers from package.info
- Move `RestTemplateMessageConverterUtil` to package `org.springframework.xd.rest.domain.support`
XD-1989 Remove hadoop cmds' warning/deprecations

- Use appropriate argument `-R` for recursive `ls` command
to avoid deprecation message
- Set `org.apache.hadoop.util.NativeCodeLoader`'s logging level
to `ERROR` to avoid warning message while loading native hadoop library
- Remove `deprecated` method usage `org.apache.hadoop.fs.FileStatus.isDir()`
as we no longer support hadoop 1.x
- Change `hadoop config fs` prompt to use URL and file:///|hdfs://|webhdfs://
XD-1984: all modules deploy to the first container

When a container arrives, use the RedeploymentContainerMatcher
to issue deployments for unallocated modules. This reuses
the logic for container departure.

This change makes it less likely that a system restart will
result in all modules being deployed to the first container
that arrives in the cluster.

A side effect of this change is that ArrivingContainerModuleRedeployer
no longer needs to query for the deployments on an arriving
container because the redeploy logic for modules in
ModuleRedeployer already prevents the deployment of
duplicate modules to a container.

2nd commit message:

XD-1984 polishing

3rd commit message:

wip

4th commit message:

Updates from review
DistributedTest: Use random available port

- In StreamPartitionTests, use `SocketUtils.findAvailableServerSocket()`
instead of port `9000`