Remove makefiles and update CMake build file.

There's no reason to have both hand-written makefile and use CMake.
Additionally, the makefile was unconventional and contained several errors.
Add getData(x, y) and update border handling.

The getData(x, y, &val) performs too much work and incurs a substantial
performance penalty because it is virtual and can't be inlined. Borders
are stored right before and after the partition data, so y=-1 and y=ny
can be used without additional control logic.
Update d8 to use linearpart<T> and getData(x, y).

The main issue with tdpartition is that it uses inheritance without
a clear purpose. Most of the code dealing with tdpartitions assume
a specific data type anyways. This level of indirection prevents
the compiler from using static dispatch and inlining critical
functions. By directly using linearpart<T> and the new getData(x, y),
serial performance doubled on my machine.
Cosmetic changes.
Add include guard for d8.h
Removed unused variables.
Add constructor to linearpart that calls init(...)
Update setFlow2 to use linearpart<T>&
Remove initneighbor.h
Change d8::resolveflats to use std::vector instead of std::queue

The way the queue was being used is a more natural fit for std::vector
Fix flat processing
Use MPI_Sendrecv in linearpart
Minor changes in linklib.h