Required or Scoped Attributes in Associations

## Required / Scoped Attributes
This adds the ability to require an identical attribute when performing associations. 

```ruby
Class Post
  attribute :author_guid
  attribute :user_guid
  has_one :hidden_category, :class_name => '::Category', :require => :user_guid
end
```

In this case, the search would like this: 
`Category.search(:post_guid=> post.guid, :user_guid => post.user_guid)`

I'm not sure if require is the right name for this feature, or scope. I thought I'd include both and see what everybody thought. Worst case scenario we remove one of them in the next major release.

## Bug  Fix
I found a bug when reading an attribute that is aliased to something else. In the event that it is an alias, I'll try and send that alias to the object instead of fetching the value from the attribute hash.

## Spec Fixes
I found a few errors in some of the existing specs, that were not being tested correctly and fixed them.