LowBalance returns amount added, if any
Also supports limits on inbound calls
Outbound call logic for overages

If cannot find an acceptable rate for the number, cannot call.
If balance is too low, cannot call.
If too close to limit, warn.
Else, call.
Add customer_id to outgoing call JSON
Support JSON route pre-limits

This will allow us to switch asterisk to the new logic before rolling out the
limits.  Asterisk will then support the limits once sgx-jmp begins instructing
it about them.
CustomerRepo::QueryKey and CustomerRepo#find_by_format

Introduce objects representing the different kind of query keys that can be used
to look up a customer.  These keys know how to use themselves to get
the (customer_id, jid) pair that is needed for an actual repo lookup.  All
find_by_* methods are now just trivial wrappers over these objects that pass on
to find_inner.

This enables the easy creation of a new helper: QueryKey.for, used as
find_by_format which allows passing an xmpp: URI, or a properly formatted tel,
or a customer id, and will find by the correct one.  This could cause a problem
if a customer id were to be a valid xmpp: URI or a formatted tel, so this method
does assume not using these formats for any customer id (which would be
ill-advised in any case).
approved_domains unproxied
Sometimes we get a list of errors, such as to LNP
Block messages over 3500/month

Generic error message to contact support.  No current customer will hit this
limit based on historical usage.
Only notify over 900

We've started getting lax about vetting the warnings because there are too many.
Raise the threshold for a warning.
Remove dead (and broken) sentry panic
Initial tests for web routes
Allow injecting a customer repo into Web
Refactor web-register to use lib/command
Handle Null TNDetails

This is based on a hotfix in prod. In this case someone appeared to have
talked to an @jmp.chat address directly. In normal circumstances this
shouldn't happen, but it's not technically disallowed, so we probably
shouldn't just crash.