Make promote-demote no longer a unit.
Add tests for promote/demote.

Also fix promotion/demotion in hashtables and kw arguments.
Merge var-promote and var-demote.
Make initial version of structural type recursion, and use it.
Add performance hint to var-promote.