Changed (pdef) to (const), cleaned up nenv_put, and nenv_rem code

const is a better keyword to reflect was the protected definitions are.
The nenv_put and put_protected were so similar they are now combined
and called with a bool of weither the new value is protected or not.
Refactored the nenv_rem function to never allow builtin functions to
be undefined. This does not affect the core library functions, they
can still be undefined. However, most of the core lib will eventually
become builtin functions written in C.