Adds test for Monitors and fixes issue with listener removal

The test MonitorsTest.shouldUnregister() was failing with a ClassCastException.
 The reason was that it was doing the cast on a field different than the one that
 it was performing the instanceof check.

Conflicts:
	community/kernel/src/test/java/org/neo4j/kernel/monitoring/MonitorsTest.java
Removes the ComException wrapping of server-side BranchedDataException

which is no longer needed due to recent changes in exception streaming
from server to client. In fact the wrapping prevented a slave to properly
react to branched data and would make that slave unable to ever join the
cluster.
Making the reporting of BiasedWinnerStrategy a bit easier to

o This is a 1.9 version - lots of classes moved around so I've
  submitted a 2.0 version as well
o Changed wording so it describes it in words that will be easier
for the field team to understand
o Added tests around the BiasedWinnerStrategy
Merge pull request #1871 from mneedham/1.9-maint-bws

Making the reporting of BiasedWinnerStrategy a bit easier to
Merge pull request #1870 from tinwelint/1.9-branched-slave-fix

Removes the ComException wrapping of server-side BranchedDataException
Removes LogBufferFactory and its default implementation

There was only one implementation of LogBufferFactory which
 was a straightforward call to DMLB constructor. This did
 not call for the need for a factory abstraction and since
 it was complicating upcoming work on monitoring it has now
 been removed.
Introduces byte count monitoring in DirectMappedLogBuffer

Uses the Monitors functionality to add bytes written counting
 facilities to DirectMappedLogBuffer. Achieved via introducing
 a LogBufferMonitor interface that is used by DMLB.
XaLogicalLog and TxLog require access to Monitors to
 create the proper monitor and pass it to their DMLB.
Renames LogBufferMonitor to ByteCounterMonitor

It is clear after some usage that log buffer monitoring is really
 a case of counting bytes, functionality that needs to be replicated in
 other places as well. It makes sense therefore to have LogBufferMonitor
 strictly count bytes, rename it to ByterCounterMonitor and reuse it
 where necessary.
Removes support for HA protocols from versions 1.5.3 and 1.7

Ha protocols from versions 1.5.3 and 1.7 are no longer supported for
 rolling upgrades. Hence they are no longer necessary to be present
 in the codebase.
Introduces usage of ByteCounterMonitor in XaLogicalLog operations

LogExtractor now updates a ByteCounterMonitor with bytes read while
 extracting transaction entries from a log
XaLogicalLog updates a ByterCounterMonitor when deserializing
 prepared transactions from disk for sending over the network
XaLogicalLog now updates a ByteCounterMonitor when deserializing
 a transaction stream over the network
Introduces monitoring in network HA operations

BlockLogBuffer now updates a ByterCounterMonitor with the bytes it
 writes to the underlying buffer. This way all operations that
 serialize transactions to the network can be monitored.
Master and Client instances now make use of that BlockLogBuffer
 for streaming results and transactions.
Introduces a RequestMonitor which logs HA requests. It supports
 request context via a hashmap which can be set to contain various
 information about the request logged.
Client and Server now update a RequestMonitor with requests sent
 and received, respectively.
Moves ByteCounterMonitor to o.n.k.monitoring package

ByteCounterMonitor is generic enough so it does not have to be
 in o.n.k.i.t.xaframework anymore
Fixes issue with Monitor tags

TaggedMonitorListenerInvocationHandler was not getting the tags that
 it was created with. The result was that listeners added for specific tags
 would get called for all invocations of the observed interface regardless.
 This commit fixes the issue and adds a test for it.
Introduces and uses TransactionMonitor

Introduces TransactionMonitor to facilitate measurement of transaction
 events, current commits and commit entry injections.
Adds support for that in XaResourceManager, tagged by datasource name.
Introduces a sample counting implementation meant for testing,
 EideticTransactionMonitor.
Introduces tests for basic functionality in kernel and lucene-index
Adds testing for transaction event monitoring in HA clusters

Adds two tests that make use of TransactionMonitor to monitor transaction
 propagation in clusters. One test counts events by committing and pushing
 from both slaves and the master, while the other counts transactions
 pulled from slaves.