While rendering the tempaltes the link.lnurl() function was not found
as no request object was passed.
Compute the lnurl before rendering the template. This way we can avoid
computing it multiple times and do not to have to pass the request object
in the template.
a big refactor that:
- fixes some issues that might have happened (or not) with asynchronous
reactions to payments;
- paves the way to https://github.com/lnbits/lnbits/issues/121;
- uses more async/await notation which just looks nice; and
- makes it simple(r?) for one extension to modify stuff from other extensions.