Reduce duplicated code related to checking for Attributes

Follow up to comment on Issue #68.  Not directly caused by that change, but found when evaluating aforementioned comment.

Changes:
* Made consistent the type restriction that Attributes must extend `Attribute`
* Changed some extension methods on `Type` to `MemberInfo` so they are more generally usable
* Utilized said extension methods in place of some alternate implementations.

**Note:**
I did not make a change affecting this, but be aware there is a little issue with naming here:

`TypeExtentions.HasAttribute` checks for inherited Attributes
`TypeExtentions.IsDecoratedWith`does not check for inherited Attributes
`TypeExtentions.HasMatchingAttribute` has a name similar to the first but does not check for inherited Attributes.