Enable dynamic PailStructure

Allow clients to specify a dynamic PailStructure via a flag in `Pail.create` or new Pail constructor. The default value for the flag ensures backwards compatibility.

I'm currently using this technique to pass a S3 client (that's configured at runtime) to the PailStructure constructor. Thus enabling remote fetching of avro schemas during serialization and deserialization based on a schema id prepended onto the payload.