Adding support for manage conference UI (Part 1 of 4)

This the the first part of the work to enable manage conference UI in
the in-call screen.

The gist:
We added the notion of a conference call object.  Where we would have
had 2 Calls before during a conference call, we now have 3.  2 originals
(which have the new state CONFERENCED) and a new Call object for the
conference call with a list of child Ids for it's children. The new
conference object maintains the State that the oldest child Call would
have if it wasn't CONFERENCED.

Changes:
- Added CONFERENCED state for Call objects which are part of a
  conference call.
- Added ability to specify child calls in Call objects so that
  conference calls can identify which calls are their children.
- Updated CallCommandService to allow CONFERENCED Calls to disconnect.
- Updated CallModeler to have a secondary updateConference() step which
  does the following:
  - Calls which are part of a conference call now get the CONFERENCED
    state
  - Creates a new Conference call objects for ever connection that is
    part of a conference call and is the earliest connection.  This
    ensures that there is only one conference call created regardless of
    the amount of child connections.
  - New conference call objects are stored in a new mConfCallMap which
    maps Connection to a conference Call
  - Change the updateCallFromConnection() function so that it works for
    new conference Call objects as well. Conference call objects inherit
    the status from the earliest Connection (earliest child Call), such
    as ACTIVE, ONHOLD, etc.
  - Send Conference call objects to the UI with the rest of the calls.

bug: 10334739
Change-Id: I9c6fa067195a1e6c43a5635a4f27405b01c46f8e
4 files changed