Implement broker and rename to sbroker

Implements broker (sbroker) that handles match making of two process
groups. Processes are queued in squeues while waiting for a match,
with option of passive queue management (head/tail drop) and LIFO or
FIFO.

Start broker:

{ok, Broker} = sbroker:start_link()

Queue a pid:

sbroker:ask(Broker)

Queue a pid from other group to get a match:

sbroker:bid(Broker)

Returns {settled, Ref, OtherPid, SojournTime} on match.
Returns {dropped, SojournTime} if dropped by queue management.

For async matching:

ARef = sbroker:async_ask(Broker).

And cancel with:

sbroker:cancel(ARef)

The later returns ok on successful removal, otherwise {error, not_found}.

Changes behaviour of squeue to ease testing of sbroker:

Everytime `Time` is supplied to squeue functions timeout active queue
management is used. Previously this did not occur if time did not
advance. Builtin backends are efficient for this case except codel in a
bad queue. Under load it is likely all queues will be "good" as head
drop will "trim" a growing queue.
Add mix support
Rework squeue API to be consistent with API for sbroker

* Drops awkward or unused functions in squeue
* Always does timeout queue management when `Time` arg included
Add rebar3 support
Remove incorrect license for squeue_SUITE