Add a double-trait-dispatch-trick based cast trait

The Cast trait replaces both MatCast and VecCast.