Reorder multiplexer class hierarchy

Reorders the class hierarchy so that java classes are separate from
more android dependent classes. This allows us to move binder state
management out of the multiplexer and into the subclasses which have
more knowledge of what the appropriate state is. As a result, fixes
a wakelock bug where release() was failing due to an inappropriate
binder identity.

Also fixes up and updates javadocs on multiplexer classes.

Bug: 164572028
Test: manual + presubmits
Change-Id: I9dde695ab24c09657f856405c6c24132bdcb76d1
13 files changed