Better error message.
Move protected functions up.
Map should return the same type as it was called on.
Multiply should return the same type as it was called on.
First draft of the Vector type.