Add simple F5 load-balancer controller

controllers/f5.rb: Re-introduce F5LoadBalancerController, which is
a simplified controller for F5 that performs no error checking and no
operation batching.

read_config in daemon.rb: Recognise the setting LOAD_BALANCER=f5 and use
the newly re-introduced, simplified F5LoadBalancerController for this
setting.

The intention is that the simple F5LoadBalancerController will fail fast,
the daemon will send a nack to ActiveMQ when operations fail, and
ActiveMQ's redelivery policy will cause the daemon to retry operations.
This arrangement will facilitate running multiple instances of the daemon
(which may receive notifications out of order and thus execute the
corresponding F5 iControl operations out of order) without needing any
shared state outside of ActiveMQ.
daemon.rb: Drop unused exception binding

listen: In the rescue Timeout::Error clause, don't bind the exception;
we don't have a use for it.
daemon.rb: Fix log message for deleting pool

delete_application: Change the log message from "Deleting empty pool" to
"Deleting pool."

After commit 1247362f28259fe7ceaf47d26446fe1aa11051d5, delete_application
no longer checks that the pool is empty, instead relying on the
controller's or model's raising an exception should the pool in fact not be
empty when the daemon tries to delete it.  This commit updates the log
message so as to be less confusing in this contingency.
README.md: Fix the URL for the f5-icontrol rubygem
load-balancer daemon depends on daemons rubygem

Make sure the daemons rubygem is installed for the load-balancer
daemon's initscript.
oo-admin-load-balancer: list-pool-members output

Improve the formatting of output for oo-admin-load-balancer
list-pool-members when a pool has 0 members.
oo-admin-load-balancer: Better error output

When rescueing an exception other than an ArgumentError exception, print
the class of the exception.
Parameterize load-balancer config file

Add a cfgfile parameter to the initialize methods of all model classes
(although none of them currently use it), the initialize methods of all
controller classes, and the read_config method of all controller classes
and the LoadBalancerConfigurationDaemon class.

Add a cfgfile parameter with default value of
'/etc/openshift/load-balancer.conf' to the initialize method of
LoadBalancerConfigurationDaemon.

Make all controller classes pass the cfgfile argument when instantiating
the model class and when calling their respective read_config methods.

Make LoadBalancerConfigurationDaemon pass cfgfile whenever instantiating
a controller class.

Make oo-admin-load-balancer take a --config option to override the default
configuration file path, and use the specified configuration file when
reading the configuration file or instantiating a controller class.

merge with commit parameterizing cfgfile
oo-admin-load-balancer: Recognize f5_batched

Recognize LOAD_BALANCER=f5_batched in oo-admin-load-balancer.

This commit makes essentially the same change to oo-admin-load-balancer
that commit 8353dbdc8da534f30b3488e9cb5d9e95f21ec7d0 made to the daemon.
Rename F5LoadBalancerModel

Rename F5LoadBalancerModel in models/f5.rb to
F5IControlSoapLoadBalancerModel in models/f5-icontrol-soap.rb.

Adjust oo-admin-load-balancer and the daemon accordingly.
Introduce REST iControl model for F5 BIG-IP

Introduce a REST iControl model for F5 BIG-IP, and use it instead of the
SOAP iControl model.

The REST iControl interface has the advantages that it does not need the
f5-icontrol rubygem and that it allows us to manipulate local-traffic
policies.

BIG-IP 11.4 deprecates the HTTP class profile feature and introduces the
local-traffic policies feature in its stead, so we need to use the
latter now, which means we need to use REST.

Update README.md accordingly.

Update README.md for change from SOAP to REST
Try ACTIVEMQ_DESTINATION before ACTIVEMQ_TOPIC

Look for a setting on the key ACTIVEMQ_DESTINATION before falling back
to ACTIVEMQ_TOPIC.  The destination may in fact be a queue rather than
a topic, and the setting should reflect this.

Modify the configuration instructions in README.md and the default
load-blaancer.conf file accordingly.
Add update method to LoadBalancerController

Add a default update method to LoadBalancerController that invokes any
update method of @lb_model if the latter is non-nil and receives update.
LoadBalancerModel: Fix delete_pool_member

Fix the default delete_pool_member method in the LoadBalancerModel base
class to call delete_pool_members with the correct arguments.
controllers/f5_batched.rb: Fix lazy loading

Change the F5-batched controller code to refer to pools, members, and
routes rather than to @pools, @members, and @routes as the former will
lazily initialize the latter, but the latter will be nil and will not
lazily initialize when referenced directly.

This is essentially the same change that commit
f0b0655714bd7e88a584fb719aa38d9477eec260 made to the LBaaS controller.
oo-admin-load-balancer: Fix add-pool-member output

Unswap the pool member and pool name in the output of
oo-admin-load-balancer add-pool-member.
Introduce nginx backend
daemon.rb: Use new add_public_endpoint event

Use the new add_public_endpoint and remove_public_endpoint events
instead of the deprecated add_gear and delete_gear events, which are
being removed in OpenShift Origin 4 and OpenShift Enterprise 2.2.
daemon.rb: Silence some warnings with parentheses