Optionally close connections when inactive

This is the first part in a series of changes to work around the inability to determine the state of an APNs connection. Because we can't determine if a channel is "alive" or not except by sending a known-bad notification (thereby closing the connection), the big idea is to close connections more frequently. In this pull request, we allow connections to close after a user-configurable period of inactivity.

One consideration here is that, if a push manager is completely idle, it might just sit there opening and closing connections at regular intervals. That seems pretty okay, to me, though.

EDIT: Also, please pardon all of the auto-formatting stuff (like `@Override` annotations) that's happening since we moved from Java 1.5 to Java 1.6.
Can configuration be null as well?

No, but I made that clearer in 2b4848d.

There's already a test to make sure constructing a connection fails with a `NullPointerException`, but that was happening by way of making an unchecked read to the given configuration object (we would try to blindly read the sent notification buffer size) rather than checking for null configurations directly.