No longer compile libandroidfw as a static library on the device since it already exists as a shared library. Keeping the static library would force us to provide a static library version of libinput for the device as well which doesn't make sense.

Disabled some error logs that occur when an input channel is closed remotely by its peer. These can happen during normal course of operations because the act of removing windows or finishing IME sessions is asynchronous so both peers may react to the change independently at different times.

The coordination with the input dispatcher is designed to avoid logging these errors. However it's not possible to achieve the same coordination with the IME so we might as well silence the errors since they don't tell us anything useful.

If something truly bad happens then one of two things will occur:

1. The system will realize that the process crashed because of a DeadObjectException or other error, so it will take measures to clean up.

2. If the error was spurious and non-fatal (how?) then at worst an ANR may occur because the consumer stopped reading from the input channel. However this has never been observed and I doubt it's even possible.

The input method manager service now supplies an input channel for communication while creating an IME session on behalf of the application.

This change significanly reduces the overhead of IME event dispatch by using a standard input channel to send input events rather than using binder. This results in fewer thread context switches and fewer object allocations.

What's more, the IME may perform additional batching of the motion events that it receives which may help it catch up if it is getting behind while processing them.