Added documentation & removed some redundant code

Docs in the header file

I've switched the properties `first` & `last` to be methods, as there is no difference in your implementation as LLVM allows dot syntax on methods.

I removed the NSMutableArray check, as `isKindOfClass` checks for subclasses too so it would never be ran as the NSArray check would pass.

snake_notation to camelCase in variable names.