Clarified SequenceCounter

Rewrote my rewrite of SequenceCounter so that it was shorter, avoided constants and bit manipulation, and clearer.

Small justifying note: the cost to short in the expression (short)(nextShortId - prevShortId) is necessary in order to get the smallest possible delta. Java promotes shorts to ints before doing operations so, without the cast, going from short.MaxValue to short.MinValue would compute a delta of +1-(1<<16) instead of just +1.

I tested with this code:

    	java.util.Random r = new java.util.Random();
    	SequenceCounter s = new SequenceCounter();
    	long t = 0;
        for (long i = 0; i < (1L << 32); i++) {
        	short delta = (short)r.nextInt(1 << 16);
    		t += delta;
    		short shortenedT = (short)t;
    		long restoredT = s.convertNext(shortenedT);
    		if (restoredT != t) 
    			throw new RuntimeException("desync");
    	}

which basically check that, as long as the difference between each id fits in a short, no information is lost.