InvalidMove -> InvalidNode and InvalidMiddle
This makes the error messages more useful since we actually know what is
causing the problem instead of just that there was a problem.