libcore changes to support ConnectionPool cache flushing

A set of observer / listener components for network
events.

Party A, e.g. the Android ConnectivityManager, can make
changes to network configuration that impacts the java
network objects (e.g. connection pools, caches, etc.).

Party B, e.g. Android libcore network components are
interested in network configuration changes.

The NetworkEventDispatcher enables Party A to communicate
with Party B without hardcoding their details. Additional
parties like B can be added.

Bug: 17314604
(cherry-picked from commit b1e60e2015b81c285938ca569b66edda63d6533d)

Change-Id: Ie0d0a8afe14e6a15253ce72f1abf9b996176e02f