Some QoL features.

- Don't require semicolon after top-level functions. It's arguably less
  consistent with nested functions (but those are part of expressions),
  but it's more consistent with global blocks and more natural.
- Use some template magic for Function template deduction.