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>
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>
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-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>
Merge remote-tracking branch 'origin/master' into feature/about_rework

Conflicts:
	alljoyn_core/src/Status.xml

Change-Id: I9612347291442a1eb8f873e8023444c188b84865
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature rework fixed issues identified in code review

This commit contain multiple fixes for issues identified in code review.

Biggest change. The Announced member function in the AboutListener passes
in const variables. Several small changes were made to the
AboutObjectDescription to make it so its helper functions could be used
even from a const object.

Changed BusObject member function GetAnnouncedInterfaces to
GetAnnouncedInterfaceNames.

Fixed the name of the include guards to match the style used in the rest of the
alljoyn code base.

Cleaned up documentation.

Change-Id: I50b089038ef779f73d6be5b55c89296c4df9f352
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature rework - AddInterface now takes AnnounceFlag

The AddInterface member function for BusObject took a raw boolean value as the
isAnnounced variable.  It now changed to an enumerated flag that gives meaning
now the isAnnounced can be set to HUSHED or ANNOUNCED.  This gives more meaning
than true or false in this member functions context.

This commit also update the documentation warnings reported when building
the API documentation.

Change-Id: I898dbed6b2d95834dadba07b0b85523bb662000c
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature rework - Add AboutDataListener

This commit contain two major changes. It contains Adds the
AboutDataListener class. This class is a pure virtual funtion that
serves as an interface that must be implemented to send out an Announce
signal.

The two virtual member functions found in the AboutDataListener are:
  GetMsgArg - This is member function is responsible for creating the
              MsgArg that is returned when a user calls
              org.alljoyn.About.GetAboutData. The returned MsgArg must
              contain the AboutData dictionary for the Language
              specified.
  GetMsgArgAnnounce - This member funtion is responsible for creating
              the MsgArg that is sent out in the
              org.alljoyn.About.Announce signal. This is always
              localized using the DefaultLanguage.

The AboutData class is now an implementation of the AboutDataListener.

When sending an Announcement the AboutDataListener is passed in as a
variable not AboutData.

The AboutListener no longer passes an AboutObjectDescription and
AboutData into the Announced callback function.  Instead it passes the
MsgArg those then can be converted to AboutObjectDescription or
AboutData by the user. The AboutProxy methods GetAboutData and
GetObjectDescription also return MsgArgs to be consistant.

Updated Samples and unit tests to account for the changed return value
for the Announced method.

The AboutData and AboutObject Initialize functions have been renamed to
CreateFromMsgArg.

Some additonal cleanup. Fixing spelling errors and removing unused code.

Change-Id: Ie81558820fd1e8712902307655d410bbaa511aff
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 Moved the member function GetAboutObjectDescription

There is little reason to have the GetAboutObjectDescription as
a public API.  This has been moved from BusAttachment to BusInternal.

Change-Id: I82cf2ad60016e40a42f6268a7b2ce961caa11691
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 GetAboutObjectDescription changed to GetAnnouncedObjectDescription

The member function GetAboutObjectDescription was renamed to
GetAnnouncedObjectDescription a name more descriptive to what the function
is responsible for doing.

The member function GetAnnouncedObjectDescription returns a
MsgArg not an AboutObjectDescription the idea being that the
AboutObjectDescription class should be just a helper class.

Alljoyn methods actually return MsgArgs when a MsgArg is expected
not some other class.  This is more future proof and more consistant
with the directions the About feature rework is going.

Change-Id: Id1bde53583ac573504dc9c6684f8397b82bc346c
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature rework - you must have an object to announce

The AboutObj no longer has the option to AboutObjectDescription when
making an announcement. The only way that a BusObject will be announced
is if that BusObject is registered with the BusAttachement.

Since many of the unit test used the fact that you could build a
AboutObjectDescription for Objects you did not really own I had to
update the unit tests and test programs.

Change-Id: I2765c2747b32372e74c4af71e172e38ae1ad69f6
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature rework - add option to announce AboutObj

Rather than force every user to adjust there programs that expect the
org.alljoyn.About interface to be part of the announced object
descriptions we not give the user an option to add the org.alljoyn.About
interface to the announcement. This option defaults to UNANNOUNCED since
there is no value added by announcing the interface other than backwards
compatability.

Change-Id: I4c0dd2600b4c502d2c0c8982ca7467f97f912521
Signed-off-by: George Nash <georgen@qce.qualcomm.com>
ASACORE-775 About Feature rework - removed un-needed functions

Since the AboutObjectDescription is only used as a helper function its
no longer needed to build the MsgArg that is used in Announcements.
This makes many of the functions contained in the AboutObjectDescription
class useless. The Add, Remove, and Merge functions have been completely
removed or made private if they were used by the class its self.

This also adds a constructor that can create an AboutObjectDescription
class from a MsgArg.

Update the unit test to take into account the changes to the class.

Change-Id: I9f5366263f7f9207cc64a07acdcfe9a05a154cf6
Signed-off-by: George Nash <georgen@qce.qualcomm.com>