Split shifting functions

* memshift: new function for shifting any arrays of any type
* strshift: reimplemented in terms of memshift

~Phillip