Exception: error code, message

These are the changes apart from the change to the hierarchy of exception classes included in #9

- The error code returned by the netcdf-c methods is included as a member variable in NcException
- The exception message is now retrieved from the netcdf-c api or strerror
- Exception messages are passed to the NcException ctor as char pointers in order to avoid in-place conversion to std::string which may throw