Skip last

Hi,

I implemented the `skipLast` operator #78.  I used `ReentrantLock` and `LinkedList` to implement it rather than `LinkedBlockingDeque` like `takeLast` #140 for two reasons.

* LinkedBlockingDeque requires that count is greater than 0 but `skipLast` can accept 0. 
* LinkedBlockingDeque requires the elements can not be null but an observable can emit a null value.