Allow assembler to get temporaries
This changes the global GeodesicFEAssembler by storing the local assembler in a shared_ptr and make the constructor, and setter, accept l-values, r-values or shared_ptr and correctly handle the memory management.
This is useful to me when writing a factory classes.