Improve compilation time and memory usage
As shown in #359, compilation times and memory consumption are getting increasingly large which will impact Arraymancer usage in hot code reloading / jupyter kernels for example.