Clean up share token logic

Splitting out &lt;13 and &gt;13 with `isUnderage`/`notUnderage` middleware that makes use of `next('route')` to skip that route if the precondition isn't met. Share tokens are only created for &gt;13 users this way, and the logic is easily readable.