build.sh: add the ability to pass arguments to make

This makes it possible to build on more than one thread, if desired.
Factor out traits for the disruptor module's public interface

Previously, the public API has exposed a SequenceBarrier generic type
parameter, even thought that isn't very relevant to callers. This change
prepares to fix this by factoring out three traits that define the core
of the public API: Publisher, Consumer, and FinalConsumer.

Unfortunately, as a result of this change, callers now have to import
the traits to be able to use the API.
Make SequenceNumber and SequenceReader part of the public API

This is necessary to allow library clients to implement their own wait
strategy, which some callers may wish to do.
Rewrite deprecated uses of Option
Improve documentation comment on default_resize_timeout

This change expands the documentation comment on the
default_resize_timeout constant to clarify what is meant by "avoiding
false positives".
Remove SequenceBarrier trait from public interface of disruptor module

This change renames the existing SinglePublisher, SingleConsumer, and
SingleFinalConsumer types into GenericPublisher, GenericConsumer, and
GenericFinalConsumer, and adds new types with the same name that do not
expose SequenceBarrier as a type parameter, and do not support dynamic
resizing of the ring buffer. The resizing support is exposed in three
new types, which are also monomorphic with respect to SequenceBarrier:
SingleResizingPublisher, SingleResizingConsumer, and
SingleResizingFinalConsumer.

Although this change makes the code more complicated in the short term,
I hope that after rearranging the internals to line up more closely with
the public interface, things will be simpler than they were before
adding all this complication.
Fix formatting issues in README.md