Added support for multiple cameras.

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Changed addCamera() methods.

They now return the index of the added
camera. Also changed addCamera() methods which took an index as a
parameter to replaceCamera() where the index is the camera to replace.
This was done because it will still be the responsibility of the
specific implementation to keep track of the Cameras in whichever way it
sees fit and allowing the list to grow unexpectedly could compromise
this. With this in mind, the semantic of placing a camera in the list at
an existing index changes to replacing the camera already at that
location. 

Signed-off-by: Jared Woolston <jwoolston@tenkiv.com>
Merge pull request #571 from Tenkiv/multiple_cameras

WIP: Added support for multiple cameras.