Where possible, make Composable's fields private

To better enforce the locking requirements, Composable's fields have,
where possible, been made private. protected final methods have been
added to make the fields available, or to provide a mechanism to use
the fields as required.

As part of this change the expected accept count and accepted count
have changed type. They're now longs rather than AtomicLongs. Their
values typically need to be considered at the same time so it's
necessary to use synchronization to ensure that a consistent view is
used.
Merge branch 'composable-private-fields'