ByteString should be java.io.Serializable

I know, java serialization is an awful world of pain, but so many frameworks that otherwise require custom serialization-like interface implementations will have a default implementation for java serialization that it's a good idea for libraries to pay the java serialization tax on behalf of users.

Also included in here is a change making `ByteString.EMPTY` the singleton the javadoc implies that it is.