By considering a^0 and 0^b, it seems reasonable to me to define 0^0 to be 0 or 1 depending on what you're up to. Of course you could argue that you just shouldn't define 0^0 for this reason.
This might be considered cheating as an answer to question 2 though because I'm really extending a map for N^2 to (0,0) in two different ways.