[Phone] Added IVI Phone support

This extension implements the phone interfaces for IVI using phoned.
It replaces the existing wrt-plugins-ivi-hfp used by Modello home screen.

It implements the following api:

- selectRemoteDevice()
- unselectRemoteDevice()
- getSelectedRemoteDevice()
- invokeCall()
- answerCall()
- hangupCall()
- activeCall()
- muteCall()
- getContacts()
- getCallHistory()
- addRemoteDeviceSelectedListener()
- removeRemoteDeviceSelectedListener()
- addCallChangedListener()
- removeCallChangedListener()
- addCallHistoryEntryAddedListener()
- removeCallHistoryEntryAddedListener()
- addCallHistoryChangedListener()
- removeCallHistoryChangedListener()
- addContactsChangedListener()
- removeContactsChangedListener()

Signed-off-by: Jimmy Huang <jimmy.huang@intel.com>
You can use default value to merge these two functions into one:

    void PhoneInstance::PostAsyncErrorReply(const picojson::value& msg,
        WebApiAPIErrors error_code, const std::string& error_msg="") {
      picojson::value::object reply;
      reply["isError"] = picojson::value(true);
      reply["errorCode"] = picojson::value(static_cast<double>(error_code));
      if (!error_msg.empty())
        reply["errorMessage"] = picojson::value(error_msg.c_str());
      PostAsyncReply(msg, reply);
    }