ASACORE-775 About feature rework

The AboutService was originally developed as a separate service from the core
functionality of AllJoyn. Now the AboutService is a core requirement for AllJoyn.

All new code is in the `ajn` namespace not the `ajn::services` namespace.

`AnnounceHandler` will become `AnnounceListener`

In the core code all callbacks are handled by listeners not by handlers. By calling it a
listener we hold consistent with the naming scheme used in alljoyn_core.

Functionality of the AnnouncementRegistrar was moved into BusAttachment.

`AnnouncementRegistrar::RegisterAnnounceHandler` -> `BusAttachment.RegisterAboutListener`
`AnnouncementRegistrar::UnRegisterAnnounceHandler` -> `BusAttachment.UnregisterAboutListener`
`AnnouncemenetRegistrar::UnRegisterAllAnnounceHandlers` -> `BusAttachment.UnregisterAllAboutListeners`

Functionality of the AboutService was moved into AboutObj. AllJoyn already has a
terminology for code that implements an interface. It is a BusObject not a Service.

Functionality of the AboutClient was moved into AboutProxy. Once again AllJoyn already
has terminology for the remote object that calls a BusObject it is a ProxyBusObject.

`AboutClient.GetObjectDescripitons` -> `AboutProxy.GetObjectDescriptions`
`AboutClient.GetAboutData` -> `AboutProxy.GetAboutData`
`AboutClient.GetVersion` -> `AboutProxy.GetVersion`

The ObjectDescription information will no longer be a Public member variable of the
`AnnounceHandler` as `std::map<qcc::String, std::vector<qcc::String> >` but will be
maintained as a separate class `AboutObjectDescription`. This allows us to hide the
internals of the ObjectDesctipion making it simpler to write language bindings. It also
lets us write member functions to help interact with the Object description.

Replace `AboutPropertyStore` and `AboutPropertyStoreImpl` with a class `AboutData` that
handles the same functionality without exposing access to information that is specified
in the AboutService specification.

Move the About interfaces into the `AllJoynObj`. The interfaces in question are
`org.alljoyn.About` and `org.alljoyn.Icon` since the interfaces are part of alljoyn_core
they will no longer be announced. This commit only contains the BusObject and
ProxybusObject for the `org.alljoyn.About` interface.

Change-Id: I65f21189672f038e433b299477b8c7d807fe73e5
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About feature rework unit tests and improvements

When trying to discover who is implementing an interface its expected that a
common use case is going to be interest in only a single interface.  For that
reason a version of the RegisterAboutListener/UnregisterAboutListener were
added that can accept a single interface.

Removed code from the AboutDataTest unit test for the CreateFromXml member
function test. The tests were testing something that was unimplemented yet.

Added AboutListenerTest unit test code this is a direct mirror of the
AnnounceHandlerTest code that is found in Original About Service
implementation.

Fixed wildcard interface matching in the AboutObjectDescription.HadInterface
member function. This error was found using the AnnounceHandlerTest unit test.

Change-Id: Id7fe3b5b0224b549dba406aec467c27291eb229b
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
Add eventfd-based events to posix

Change-Id: I9c5b827fbe65f7764a28abadc52cd39c6b576921
Signed-off-by: Craig Dowell <cdowell@qce.qualcomm.com>
ASACORE-775 About feature rework

After some consideration I decided to remove AboutObj Init member function
The everything that was provided to the Init function could be split between
the constructor and the Announce member function. Since AllJoyn does not use
Init functions anywhere else this fits in better with the design of AllJoyn.

Change-Id: I259d4933559c72b4d7147f16e05262e42f574977
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About feature rework - specify if an interface is announced

- Added the ability to specify if an interface is announce when adding the
interface to the BusObject.
- The user can get a list of announced BusObjects using the
GetAnnouncedInterfaces method.
- Added the ability to get the AboutObjectDescription for BusObjects registered
on a BusAttachment.
- Additional cleanup to removed development test code.

Change-Id: I04b8b8c0dd10ac9f183ca79ae79183147171b0a2
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About feature rework - Updated AboutObjectDescription class

Added the following member functions to the AboutObjectDescription class:
   Merge - merge path and interface information from one AboutObjectDescription
       class with another AboutObjectDescription class.
   GetPaths - used to get a list of all ObjectPaths in the
       AboutObjectDescription
   GetInterfaces - used to get a list of interfaces for a given ObjectPath
   Clear - Clear all information from the AboutObjectDescription class.

Change-Id: I6d1b720ef9952a083d0c6d8cc48d6050af1cfee0
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About feature rework Update AboutObj to use BusObjects that announce

when AboutObj.Announce is called it will add any BusObjects that were marked as
announced to the AboutObjectDescription that is announced. This is always done
and is not optional.

BusAttachment.GetAboutObjectDescription will always clear the previous contents
of an AboutObjectDescription passed in and replace the contents with the current
state of the registered BusObjects.

The AboutObj no longer holds references to the AboutData and AboutObjectDescription
it now holds a copy of the information.

Minor updates to existing test to account for current changes.

Change-Id: Ic60242e5889b4afc9b3d7a47dc403ca7fdce0366
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About feature rework - Add the GetInterfacePaths

This adds the  GetInterfacePaths member function to the AboutObjectDescription
class.  This makes it possible to get a list of paths for a given interface.

Change-Id: I285b33d333eacb147047b392a551d170af64835e
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
Add Condition Variable support for Posix and corresponding unit test

Change-Id: I60744ab13f5d0158f95b6057e4e661804840c84c
Signed-off-by: Craig Dowell <cdowell@qce.qualcomm.com>
Add Condition Variable support for Windows

Change-Id: I1c120bdca8000c424a11c821e280bca4e4db9ed3
Signed-off-by: Craig Dowell <cdowell@qce.qualcomm.com>
ASACORE-775 About feature rework - Use Get/Set in AboutData

The AboutData class had Add fields and then Get field information
The interface should always be Add/Remove or Get/Set.  Since the
fields are are actually getting set to a value I change all instance
of Add to Set.

Change-Id: I294cc71ffea456ec4206c0045be9d2d054062f0a
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About feature rework sample code and unit tests

Change-Id: Ic0a9b58c92ad00f6afc4f276569618cb921da4f0
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature Rework - Add implementation of org.alljoyn.Icon

This implementation closely resembles the implementation used by the
original implementation of the About Feature.

Also changed the value for VERSION in AboutObj the specification states
that it is a unsigned 16 bit integer not an unsigned 8 bit interger.

Change-Id: I12cc202168551ef867a294d2cdebbd1b6283d2b0
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-817: Don't select on eventfd-based SetEvent

Change-Id: If12daf3eac085955671bb5adfc681890155fff8b
Signed-off-by: Craig Dowell <cdowell@qce.qualcomm.com>
ASACORE-775 About Feature rework fixed issues identified in code review

The Set/Get Manufacturer was using the verb Manufacture not the noun
Manufacturer.

Fixed several minor spelling errors and some White space errors.

Change-Id: Ife90139542d4dc87682fb073ad0bd706e08fa409
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-776: Code cleanup and stabilization

Change-Id: Ia643e2478c59702f0503a9781c8b9a58eb9f5b82
Signed-off-by: Inga Stotland <ingas@qce.qualcomm.com>
AJCORE-1242: Correct header length based on presense of EACKs

Change-Id: Iaa0bbd5d82ae702237d4558122c18f650fef0aca
Signed-off-by: Inga Stotland <ingas@qce.qualcomm.com>
ASACORE-833: Do not include uninitialized RTT into TTL estimate

Change-Id: I9c258b00752233c56956eeb76d8a1b0ebd516cac
Signed-off-by: Inga Stotland <ingas@qce.qualcomm.com>
ASACORE-841: Mark segments as "delivered" when giving them to the upper layer

Change-Id: I28ba5b04ebeda0fe7d9abb1d8ce499b46debcee3
Signed-off-by: Inga Stotland <ingas@qce.qualcomm.com>
Fix merge conflict

Change-Id: I973503ffcdd9b94765f3b8b4be3e222b9911fc67
Signed-off-by: Craig Dowell <cdowell@qce.qualcomm.com>