Adjust full frame rate limit

The full-frame rate limit only applies at full frame, not just above
1080p. This is presumably because the camera's preview mode only
*actually* does full frame at maximum resolution.
Fix #26

Implement video-port-based capture while recording. This requires the
introduction of a splitter on the video port, rejigging the encoders to
accept an arbitrary input port (it's now either a camera port or a
splitter port, and moving the camera capture-enable code to the camera
class as the encoders can no longer assume their input port is actually
attached to the camera).

In the course of enabling this, some tidy-up of the image encoder
classes has also occurred with the result that raw video-port captures
are also now supported (tests have yet to be added for this).

Make splitter ports explicit
Updated changelog and version for 0.8
Tidying up

Refactored implementation of #26
Fix test configuration

No need to remember previewing state when changing resolution and
raw_format; since fixing #22 this is no longer necessary
Raw format is specific to capture

Therefore the fixture shouldn't be universal...
Added use_video_port to capture tests
Fixed property setters which disable the camera

The new splitter component (like the null-sink preview component before
it) requires temporarily disabling when setting things like resolution
and framerate. Now that there's three things that need disabling and
re-enabling in these setters it made sense to split out the logic into
separate methods and add the splitter disable/enable there
Fix #28

Missing imports of the exception classes from when the encoders got
factored out into their own module
Fix #30

numpy's fromfile method only accepts "real" files, not BytesIO, or
StringIO, or frankly anything else (even io.open fails in Python 2 - not
Python 3 though as it's just a straight wrapper over open() there).
Add some comments for the new private methods
Fix #29

Instead of relying on tell() (which several sorts of streams aren't
going to support), it's better to simply accept and ignore the None
return value for the write() method as Python 2's mechanism for
reporting unsuccessful writes (whole or partial) is simply to raise an
exception instead of returning anything.
Make _get_ports use more obvious

Use of _get_ports involves a couple of boolean parameters; without
explicitly named parameters, calls to _get_ports looked distinctly
ambiguous
Fix #27

Implemented segmentation of video files via a new split_recording
method. This is a considerably simpler API than that proposed in the
ticket, although it does have the (minor) disadvantage that size-based
segmentation won't be as precise as it would with, say, a callback based
interface.

Also fixed a nasty bug in the MMAL translation (an off-by-1 error due to
a missing entry in the video encoder parameters), which in turn fixed
the setting of immutable input. Finally, tidied up the encoder
configuration code to use explicitly named options (it's a bit more
robust).
Tidied up encoder config for JPEG encoder

Same changes as for the video encoder
Added split_recording to changelog for 0.8
Updated recpies with new 0.8 functionality