VM: Fix incorrect template returns in `is_subtype`.
VM: Fix incorrect template returns in `is_subtype`.

- It turns out that returning from a template ultimately returns from the function that is using the template. This lead to a nasty subtyping error involving intersection types (uncovered by the `dispatch/intersection.lore` feature test).
- Replacing these templates with procs has no discernible performance impact. Instead of keeping `is_subtype_impl` as a template, we can simply force the compiler to inline the function.

marcopennekamp/lore,marcopennekamp/lore