Move abstract classes out of Formula directory so we can rm some hacks

The first commit moves the abstract base classes out of the Formula directory and into a place where Homebrew will not try to load them as if they were concrete formula classes. The second commit removes related hacks which are no longer required.

While testing this, I found and fixed a bug in the update code that would result in a stray broken symlink. I would like that fix to propagate before rolling this out.

I will commit this in a week or so unless there are any objections.