Implement slice::Vector for Option<T> and CVec<T>

The `std::slice::Vector` trait effectively provides an interface for saying an object can give a slice view in to itself.  Both `Option<T>` and `CVec<T>` expose `as_slice` but do so by implementing them directly rather than implementing them via the `Vector` trait.

This patch alters both `Option<T>` and `CVec<T>` to instead expose it by implementing `Vector`.