Add basic Frame subclass of ndarray.

    In [1]: import pims

    In [2]: images = pims.ImageSequence('pims/tests/data/image_sequence/')

    In [3]: image = images[2]

    In [4]: type(image)
    Out[4]: pims.frame.Frame

    In [5]: image.frame_no
    Out[5]: 2

    In [6]: image
    Out[6]:
    Frame([[134, 133, 133, ..., 135, 136, 134],
           [137, 136, 137, ..., 135, 134, 133],
           [135, 133, 137, ..., 134, 132, 130],
           ...,
           [130, 129, 130, ..., 133, 133, 133],
           [129, 128, 129, ..., 131, 130, 130],
           [129, 128, 129, ..., 129, 130, 131]], dtype=uint8)

    In [7]: image + 5
    Out[7]:
    Frame([[139, 138, 138, ..., 140, 141, 139],
           [142, 141, 142, ..., 140, 139, 138],
           [140, 138, 142, ..., 139, 137, 135],
           ...,
           [135, 134, 135, ..., 138, 138, 138],
           [134, 133, 134, ..., 136, 135, 135],
           [134, 133, 134, ..., 134, 135, 136]], dtype=uint8)

    In [8]: np.sum(image)
    Out[8]: Frame(34423137L, dtype=uint64)

    In [9]: image.sum()
    Out[9]: Frame(34423137L, dtype=uint64)

    In [10]: image.dump('some_image')

    In [11]: image_again = np.load('some_image')

    In [12]: type(image_again)
    Out[12]: pims.frame.Frame

    In [13]: image_again.frame_no
    Out[13]: 2

    In [14]: image_again
    Out[14]:
    Frame([[134, 133, 133, ..., 135, 136, 134],
           [137, 136, 137, ..., 135, 134, 133],
           [135, 133, 137, ..., 134, 132, 130],
           ...,
           [130, 129, 130, ..., 133, 133, 133],
           [129, 128, 129, ..., 131, 130, 130],
           [129, 128, 129, ..., 129, 130, 131]], dtype=uint8)