PERF: BlockPlacement.copy() speed-up
Copying of a `BlockPlacement` is currently slower than it could/should be:
- `copy()` cannot be accessed from python, one currently needs to re-implement `copy()` if one wants to duplicate a `BlockPlacement` instance 
- `copy()` tries to infer a slice for any array contained in the `BlockPlacement`.
- After `copy()` passes an array to the constructor, a sanity check in the form of `np.require(val, dtype=np.int64, requirements='W')` checks that the array is a valid input for a `BlockPlacement`. This is unnecessary since the array originated from a `BlockPlacement` for which this check was already done.
