added smart_ptr class + C++11 feature support

smart_ptr: switches between std::auto_ptr and std::unique_ptr
according to cmake flag.

C++11 support: according to user C++11 flag, the appropriate compiler flag is added
in the middle of removing boost

currently implementing a generic mesh class, which takes over the runtime-style mesh class

also, identified a problem regarding the 'problem_description':
this is a ViennaFVM structure and should thus be moved into a 'physical model' (the 'problem' classes will be renamned to 'pysical_model')
so, significant restructuing ahead ..
further restructuing triggered by boost killing

moving the stepper-based loop inside the problem classes.
simplified problem class interfaces
quicksafe: in the middle of restructuign discretization - pde
quicksafe: considerable progress in restructuring

fvm class now works together with pde_set hierarchy.
pdes and function symbols are linked via key identifiers,
paving the way for a generic processing of arbitrary PDE-sets via the FVM class.
nin2d laplace works!
(quicksafe) implementing the DD PDE set

also extended the PDE class to also hold damping term and geometric update flag
(quicksafe) working on providing initial guesses via the PDE set

so we can also externally provide a container of values, 'my very own initial guess method' or pre-defined initial guess methods,
like the built-in potential
(quicksafe) revisited the device::{set,get,has}_quantity interface

the device now stores locally the quantity sets for the segment-specific cell ranges.
this naturally allows to externally provide a quantity set, a segment-wide scalar value.
in the future the interface can be naturally extended to functions or viennamath expressions
(quicksafe) working on generic and dynamic initial guesses

work in progress. each PDE set stores a map<quantity_name, initial_guess*>
the discretization method access retrieves this generic initial guess
for a particular unknown quantity (for nonlinear problems only ..)
and forwards the pointer to the underlying functor to viennafvm's set_initial_value method.

not entirely convinced with current implementation: virtual functor is called for each
cell, so for each cell a virtual function is called ..
also, the functor needs access to the device and the segment index it should operate on
(to access other possibly required quantities, e.g., for builtin potential we need the doping)
-> this feels clumsy. need to rethink
drift diffusion works with the 2d nin diode example
implemented contact model approach and revisited initial guesses

the PDE set classes can now set default contact models and initial guesses via:
  set_initial_guess(viennamini::id::potential(), new viennamini::builtin_potential());
  set_contact_model(viennamini::id::potential(), new viennamini::ohmic_contact());

DD 2d nin diode works, laplace does not, reason unknown atm.
needs debugging ..
decoupled majority of *.hpp files into headers/sources
fixed PDE sets: laplace and DD::both PDE sets work now

added 'contacts' to the 'permittivity' roles -> this distributes the
permittivity also on contact segments, which is required by ViennaFVM.
simplified device::make method + reactivated mosfet 2d/3d devices

mosfets currently don't work, as their is a bug in the implementation of the ohmic contact models
with regard to handling oxide segments correctly.
fixed fvm handling of gate-oxide contacts + additional debug msgs

there is still a problem with mosfets, to be precise with
the handling of the gate and oxide. the potential is not being solved,
however, the electron and hole conc are.

debug output should helb me track it down.
removed last Boost parts.
added comments to DD-powered mosfet 2d + debug output to FVM
added capacitor 2d example
debugging DD handling of MOS structures + new test device: mos2d

still experiencing issues with solving the Laplace equation on Oxides.
Currently debugging with minimized mos 2d device. FVM discretization class
currently not working due to debugging.