Pre-SIP: Improve Syntax for Context Bounds and Givens

I still hope someone finds a way to avoid the keyword altogether.

The functionality is really good, should have been always like that, but needing a keyword for something that looks like it should be default behavior seems odd.

As described in the other thread, I actually don’t even understand fully why the keyword is needed. Does it only fix a corner case (for literal Singleton types), or is it more?