Refactor can permissions stuff

@ninjapanzer @jnf This is a big simplification to the `can` stuff. 

It was way too heavy on meta-programming when it didn't need to be. Also, [since Ruby's class variables are broken](http://www.oreillynet.com/ruby/blog/2007/01/nubygems_dont_use_class_variab_1.html), the `Can` module can just use an instance variable on the class object itself. This change also had the nice benefit of removing almost all of the code. :)