Mainly documentation update & some code refactoring

* C++
- modified the print functions to be more general (ie. accept any Eigen
  vector, matrix or expression)
- modified conversion functions to be more general (ie. accept any Eigen
  vector, matrix or expression)
- changed some error messages to warnings messages when converting from
  mxArrays
- some minor adjustemnts in sparse_slice
- added licensing header where missing.

* Doxygen
- added 'doc' target to the makefile if Doxygen is found on the system
- added Doxygen configuration file
- added documentation pages
- started documenting all the classes, functions, etc.