This is the first of potentially many c++ extensions to blenlib.
This patch implements two new very similar data structures:
ArrayRef and MutableArrayRef. Both have a typed pointer
and a length of the referenced array.
This is inspired by the llvm code base. While working with it,
I noticed that these data structures make C++ development much
more comfortable in many circumstances.
They can make code faster by eliminating unnecessary copies and
conversions. They also make code simpler by avoiding unnecessary
templated parameters to support different containers as inputs.