New array broadcast function and deprecation of broadcast_weights.

broadcast_weights requires an array to conform to. The new function
broadcast_to_shape requires only a shape tuple. This change is
motivated by the desire to avoid loading cube data payloads whenever
possible.
Modified weight generation functions to allow singleton dimensions.

Also added missing tests to ensure these cases are working correctly.
Merge pull request #764 from ajdawson/strided-broadcast

Add `broadcast_to_shape()` and deprecate `broadcast_weights()`.