Fix Pipeline throws NPE using exec without multi (fixes #623)

It's fixed patch to #623.

Currently Pipeline doesn't check current state (multi or not) when commands related to multi are received.
So it could throw NPE, as #623 stated.

I changed Pipeline to check current state when multi / exec / discard commands are received.
If it's wrong state, Pipeline throws JedisDataException.

Following is wrong states.
* exec without multi
* discard without multi
* multi within multi

Actually Redis returns ERR and we can pick.
But Jedis' Pipeline + multi has some complex sequence, so it can just throw NPE without ERR.

User can use Pipeline + Multi properly to avoid this issue.
But throwing NPE is really a serious problem, so Jedis should be properly handled.
(I think it should be hot-fix.)

@xetorthio @marcosnils Please review and comment! Thanks!