Without extracting to autoconfig the @ConditionalOnMissingBean won't
always work because it is dependent on the order of the configuration
classes being processed (and autoconfig always somes last).
Because we were using Lifecycle to kick off the eureka registration the
local server port wasn't available yet. The change is to use an
ApplicationListener and listen for the event that contains the container
with its port instead.
Fixes gh-15
The problem is pretty deep here so I hope I did something sane. Basically if
PeerAwareInstanceRegistry.openForTraffic(int) ever gets called with a 0 argument
it resets the threshold for numberOfRenewsPerMinThreshold to 0 from which
it only ever recovers if the same method is called again with a non-zero argument.
For a standalone server this means that it will never automatically expire
any leases (only when it chats to its neighbours and finds out they have
registered services will it ever switch the threshold back on).
Another problem (unsolved) is that the reset mechanism will kick back in
occasionally (resetting to 1 with this change, but that's probably also
a bad thing). And when there *are* actually peers to talk to unless they are
in AWS they will never communicate correctly about the actual number of local
services (the criteria for that are deeply connected with AWS and EIP).
Fixes gh-6