cashew: send usage requests via cellular interface

cashew currently sends usage requests via the default service. Since
requests must be sent over-the-air, this forces us to send requests for
a cellular service only when it's the default service.

This CL changes cashew to send requests for a cellular service over the
interface corresponding to that service, whether or not it's the default
service. This allows us to retrieve and display plan info as soon as the
cellular service is connected.

We accomplish this by changing flimflam to install a host route that
causes all traffic to the usage API to go out via the cellular
interface (see issue 17920) and monitoring the service's StickyHostRoute
property from cashew. If a service has a sticky host route, we no longer
require it to be the default service before sending usage requests.

BUG=chromium-os:16250
TEST=Ran unit tests and performed manual testing on device

Change-Id: Ib248aac6f254a5b4e3a070ddd05969538331e999
Reviewed-on: https://gerrit.chromium.org/gerrit/7184
Tested-by: Vince Laviano <vlaviano@chromium.org>
Reviewed-by: Jason Glasgow <jglasgow@chromium.org>
Commit-Ready: Vince Laviano <vlaviano@chromium.org>
2 files changed