Description 
DimFunc provides behaviour like sum(X, dim) for functions that don't already handle dimension arguments.
The function need only handle vectors (or 2d matrices, if faster) and may return vector output. The size of the output matches that of the input, except that the chosen dimension changes to match the length of the output of the function (often, but not necessarily, 1).
Usage:
out = dimfunc(func, data, dim, out_length, handles_matrix)
Input:
func  function handle (or function name string) to apply
data  input array, of arbitrary dimensionality and size
dim  dimension to operate along, defaulting to first nonsingleton dimension
Optional inputs:
out_length  length of vector output from func (default: 1)
handles_matrix  Boolean flag, if true, assume func will operate on columns of a matrix input (default: false)
Example:
v = randn(10,10,3); % a 10x10 array of random 3vectors
n = sqrt(sum(v.^2, 3)); % a 10x10 matrix of their norms
N = dimfunc('norm', v, 3); % the same as n, but perhaps clearer
Note that norm does not allow the "dim behaviour" that sum does; in this case, it is easy enough to use sum directly, but for other functions there might be no simple alternatives. I hope that dimfunc will make it slightly easier for others to write functions by removing the need to worry about nD arrays, instead just handling either 1 or 2d inputs.
