New Inheritance Design for Codecs

Reworked the design of InternalCodecs to use virtual/multiple
inheritance instead of delegation. This allows an internal codec to mix
different implementations of encode/decode and read/show quite nicely.
Merge branch 'master' of https://github.com/DaMSL/K3-Core
Interpreter: ext annotation method now takes an empty collection to know the type

In case there's an empty collection as input. In future, we can get this
from the typechecker.
Also, added type information to type mismatch error in collection.
Added coerce builtin to convert collection types

This is needed to convert between, say, a set and a seq. We do this in
the old k3 in a few places, and there's no easy way to bypass that.
New rst.k3
Merged with master again. Added cross-collection binary operations, e.g., to allow combining bags/sets/lists