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.

Could return METHOD_ROOT_TO_CONTRACT_ROOT[method_root] here and then change contract_name function to receive contract_root and suffix back and remove the second line of contract_name. Would make this split_method_name function misleading though. Either way works. Up to you.