Fix for memory leaks
The use of shared pointers from elements to their edges/faces and also from edges/faces to connected elements created a circular dependency that meant that memory was not freed. Circumvented by the use of weak pointers in the index from edges/faces to elements. Also, there are circular include dependencies of headers, some of which I also addressed. Note that this revision requires include guards in cadfixapi.hxx.