[BUG] Fix array iterators reaching end.

This PR brings the following modifications:
- `end_range` and `end_subrange` are removed from `MultiArray` class;
- `begin_range` and `begin_subrange` are renamed as `begin_array` and `begin_subarray`.
- To iterate an `ArrayIterator` or `SubarrayIterator`, we do the following:

  ``` C++
  for (auto it = image.begin_array(); !it.end(); ++it)
    *it = do_something();
  // That's all folks.
  ```