Use cbegin/cend rather than std::begin/end.

Unfortunately, std::cbegin/cend are only in C++14, which I'm not
committed to yet.
Un-templatize vm_function_t definition.

The call operator still takes a variadic template, but otherwise it's
no longer taking the VM/interpreter type as a type parameter.

Also adds vm_function.cpp to make a member function non-inline.