DEC: Discrete Exterior Calculus

This new package adds discrete exterior calculus features to DGtal. It contains:
 
   - new `dec` packages (dec operators, test files, examples, documentation)
   - new `linalg` with linear algebra concepts and backends (Eigen at this point) 

As you would see, this PR, mostly managed by @elcerdo,  is quite huge and some documentation pages are still "work-in-progress". I send a PR just to start including this great package into DGtal and to clean things up thanks to your comments.

> I discussed Clone<>, ConstAlias<> and CowPtr<> with david but i  
> don't this falls into any of those cases. For my understanding,  
> those classes are just here to remove an ambiguity of ownership of  
> parameters: Clone<> hints that the object is deep copied and those  
> that its original version be disposed in any way the user desire. On  
> the other hand ConstAlias<> hints that the lifetime of the parameter  
> should be longer that the lifetime of the object it is passed to.
> Then here Clone<T> should do a proper job, but since there is no T&  
> or const T& cast in Clone<T>, this object will actually copy the  
> parameter twice: one time in the Clone<> cast operator, and another  
> time in the copy constructor.
>
> Am i missing something?

As I said before, Clone hides in fact a pointer and a const enum which  
tells the origin of the argument (i.e., temporary, instance, pointer  
on instance, smart pointer, etc). When you use the instance b  
(Clone<B> b), depending on how you use it, it  
converts/clone/instantiate accordingly.

>
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/DGtal-team/DGtal/pull/821/files#r14815948