Update (WIP) Environment.hpp

Updated the header to make it easier to understand and easier to update. Probably could do something better than friending the main class but I couldn't think of anything I was going to use derived classes and protected variables but couldn't figure out how to change a protected variable in the main class from the derived ones( can do the other way though .)