Use akka.util.ByteString instead of Array[Byte]

It might be too early optimization, but there's a lot of slicing/concatenation of byte array so I refactored them to use `akka.util.ByteString` which is designed for this purpose.

Also replaced `List` to `Vector` in reply parsing because appending to list is too expensive.