LPS-47465 Add test case to test for reference counts
LPS-47465 Add tuple class

This class delegates both hash and equals to the contained service
reference. It also delegates compareTo to the contained service
reference, so it will behave as a key exactly the same as a service
reference used to behave.

This way the buckets can easily store these tuples ordered by their
references and obtain the associated services.
LPS-47465 Change interface so buckets don't need to get services from
references.

The service tracker map implementation will hold the references to the
services thus simplifying the buckets' logic.
LPS-47465 Comparator adapter for user provided comparators

This comparator is used as an adaptor so users can provide
Comparator<ServiceReference<S>>.
LPS-47465 Adapt to the new interface
LPS-47465 Adapt to new interface
LPS-47465 Adapt to new interface

Now the ServiceTrackerMapImpl will ask the service tracker to track the
service reference and service tuples. This implies the
ServiceTrackerMapImpl MUST call just one time getService() for each
tuple and will handle the tracker service along with the service
reference to the buckets using the tuple.

Furthermore if no key is emitted by the mapper then a null will be
returned so that the service tracker does not track that tuple (since it
would not be accesible by any key).

The API to the user has been left unchanged.
LPS-47465 Don't use PropertyServiceReferenceComparator by default.

Instead use the inverse of the natural order of the service references.
The service references already are ordered using the _service.ranking_
property. We use the inverse so the first fetched elements are those
with highest ranking.

The behaviour of the map has not been changed. So the users may provide
their own comparator to the map. The PropertyServiceReferenceComparator
is left there since it can use any arbitrary property or logic to do the
ordering.
LPS-47465 Manual source formatting
LPS-47465 Test reference counting
LPS-47465 Balance out getService and ungetService

http://www.mail-archive.com/osgi-dev@mail.osgi.org/msg03454.html
LPS-47465 Simplify
LPS-47465 fix compiler warnings
LPS-47465 move these classes because they are used in the API
LPS-47465 update references
LPS-47465 missing packageinfo
LPS-47465 move code only
LPS-47465 delete the obsolete factory
LPS-47465 rename the methods to multiValueMap or singleValueMap
LPS-47465 the impls should be package private