Refactored contract.rb and contract_symbols.rb.

@bsoetaer 
contract.rb was doing a lot of symbol manipulation before.  It's still doing a bit, for example when it loops through the secondary suffixes and concatenates them with the primary suffixes, but it's not much, and probably not worth moving into the symbols module.

After this, I'll just fix the invariant infinite loop and make it apply to all methods of the target class, and then I think we'll be ready to write some real contracts.

Are these two lines necessary? Shouldn't this already be the default proc without using these lines? Or is ruby weird again and the default proc for a hash is not to return the value associated with the key?