Change the interface to nd::empty to treat the dimensions as new

nd::typed_empty is added for what nd::empty was.

nd::dtyped_empty is a version of nd::empty that takes
an arbitrary number of dimensions. The name is different
to avoid unexpected overloads of nd::array.