Copy constructor/Cloning Commit

Added copy constructors, clone functions, and added more logic for move
validity checking.