Fixes on header usage and definitions

This pull request is two-fold:

- Replace deprecated header file inclusions to their adequate counterparts (e.g. `<stdlib.h>` to `<cstdlib>` and many others)
- Prevent all headers from having `using namespace`, which forces using that namespace in all other source files that include them. This also involved moving `using namespace std;` to the cpp files and explicitly stating some types as part of std (`std::string`, `std::vector`, ...). This conversion was exhaustive, but since this branch compiles properly, I suppose everything is correct.

There may also be a few tweaks in some class definitions, such as explicitly indicating the destructor as `= default`. These require C++11. VS claims to support defaulted and deleted member functions, so hopefully it will compile. Otherwise, we can just fix before merging.