[MONDRIAN-1726]  Possible deadlock when number of batches exceeds available connections in the pool

Deadlock could occur if a cardinality query occurred on the actor thread when all db connections were consumed.  See the details of MONDRIAN-1726 for details about
the exact scenario.

This change forces cardinality values to be loaded before issuing a LoadBatchCommand, avoiding the risk of a query happening on the thread.  The down side of this approach
 is that cardinality checks are performed even in some cases where they wouldn't be necessary.  MONDRIAN-1801 is intended to come up with a better solution for Mondrian 4.
(cherry picked from commit f1c26c4)
[MONDRIAN-1726]  Eliminated RolapUtil.Semaphore in favor of java.util.concurrent.Semaphore.  Our home-rolled version had bugs that show up when testing with low QueryLimit values.
(cherry picked from commit 502daee)
Merge pull request #186 from mkambol/35mon1726

[MONDRIAN-1726] cherry pick