Add AsyncInputFeeder.feedInput(ByteBuffer) to allow usage with direct ByteBuffers and optimized impl for this case.

Motivation:

We are currently looking into using aalot-xml in netty to provide an async XML decoder. The problem is that at the moment it is only possible to feed data via byte[] while we use direct ByteBuffer when reading from the SocketChannel. This means we need to do a memory copy each time we want to decode.

Modifications:

- Add AsyncInputFeeder.feedInput(ByteBuffer) to allow usage with ByteBuffers
- Rewrite AsyncByteScanner/AsyncUtfScanner to be abstract base classes
- Introduce two concrete implementations of AsyncUtfScanner. One which is optimized for handling byte[] and one for ByteBuffer
- Add new method to AsyncXMLInputFactore to allow create an AsyncXMLStreamReader from a ByteBuffer. This will return an our optimized AsyncUtfScanner implementation for ByteBuffer.

Result:

AsyncInputFeeder can be used with ByteBuffer and byte[] while be able to create the optimized version depending on what the user wants.
Correctly feed data when create AsyncXMLStreamReader from byte[]

Motivation:

The provided byte[] was ignored when create a new AsyncXMLStreamReader from it.

Modifications:

- Add throws XMLStreamException to the methods
- Correctly feed the input data

Result:

AsyncXMLStreamReader contains the correct input when create from byte[]