CDK-647: Update examples to use Flume's Log4jAppender and DatasetSink

 * This patch includes configuring the Log4jAppender to gracefully
    handle connection errors. This is useful as it avoids a circular
    dependency between loading the log4j configuration to create the
    dataset and starting Flume after the dataset exists.
 * The README for the logging, logging-webapp, and demo examples have
    been updated accordingly.
 * This patch also includes some fixes needed to work on the CDH5.1
    QuickStart VM. I suspect more of the examples may have issues.
    So I'll file a follow-up JIRA to check them out and to update the
    top-level README to account for changes between the 4.4 and 5.1 VMs.
I don't agree. It's not a good idea to require that the application doing the logging have any access to the Hadoop cluster. That's why it's using Flume. What's bizarre is that we require an AvroSchemaUrl at all when our final target is a DatasetSink.

If no URL is provided, it should look up the schema at the destination side. This would require changes to Flume's Log4jAppender and the DatasetSink to actually implement.

The other way to fix this is to have a dataset CLI command that will inspect a dataset and generate the appropriate log4j configuration.

Either way, we have no method of passing a schema URL for a Hive-backed dataset as we store the schema in the metastore. In that case, you have to leave off the AvroSchemaUrl configuration entirely and a full schema will be serialized along with each record.