Added dynamic types and some class method tweaks.

Changed 'NSObject*' types to id to reduce the amount of casting required when using the library.  I think using the dynamic type here is more convenient for consumers and doesn't have any downsides (that I can perceive).

Replaced explicit return types with 'instancetype' in class methods where a related result type is returned.  Best explained here: http://nshipster.com/instancetype/

Replaced explicit types with 'self' (which refers to the class in a class method) in class methods that returned allocated instances of the same class.  Main benefit of this is to the polymorphic behavior of these methods (same class method can be used to return an instance of the inheriting class).  This isn't necessarily relevant to some classes (I doubt anyone will subclass ArtemisBitSet), but I changed them all for consistency.