Resolve copy-constructor cppcheck warnings

Address cppcheck reports of classes or structs without copy-constructors (cf The Big Three) which have allocated memory that needs to be manually handled. See Issue #506.

PR will be further amended before being ready for review.

So far have:
- Implemented a NONCOPYABLE() macro. A preparatory stage for properly testing subsequent changes when adding copy-constructors.