Improvements for Go templates

- Treat `if` as an opening control
- Match all built-in functions exactly. `end` and `endTheWorld` are two different functions, the latter could be defined by the user, as Go templates allow defining your own functions.

See the commit message of e604c51 for more details on why new functions were added to web-mode.