updates to handle larger projects,  better MATLAB compatibility, initial containers etc

- change dispatching mechanism in the mexFunction from long "if else" list to use std::map
- change names of operators in matlabopers.swg from Octave to Matlab (still a few todo)
- initial attempt to get containers to work. For instance, replaced various "octave_value"
with "mxArray *", "Octave" with "Matlab" etc. Indexing and iterators  don't work yet.
- use Getattr(b, "sym:name") as opposed do "name" in a few places, e.g. when writing
class hierarchy in the matlab file (otherwise we get the C++ name, not the matlab name)
- not use "SWIG" as warning-id for matlab, as matlab doesn't like that. I've replaced these with "SWIG:RuntimeError".
- use _snprintf for MSC_VER (I know that William prefers not to use this function nor indeed snprintf...)
- define SWIG_CPLUSPLUS_CAST (any modern compiler will fail on the wrapped code otherwise)
[MATLAB] create objects of proper type (as opposed to SwigRef) in more cases and add type checks

- store MATLAB class name in the clientdata for each type
- use this stored data in SWIG_Matlab_NewPointerObj to let MATLAB create an
object of the correct type
- check type in SWIG_Matlab_ConvertPtrAndOwn. This solves a problem with overloaded
functions. Previously, the first overload was always called, resulting in a crash if the type
was incorrect.

TODO:
- return-type of functions is still SwigRef (current-workaround: pass to a constructor)
- deleting a shared_ptr causes segfault
[MATLAB] solved problem of deleting objects twice

for class hierarchies, matlab calls delete() for every class, which creates problems for C++.
This patch prevents multiple deletes by settings swigOwn=false.
[MATLAB] Added integer indices for gateway functions
[MATLAB] Added constant time lookup in gateway function