Add support for bounded STP work queue

Added a configuration property (MaxQueueLength) that can be used to
enforce an upper-bound on the size of the workItemsQueue.

If the property value is null (default), no upper bound is enforced.

Queue limits configured on a pool will be ignored by WorkItemsGroups that
use that pool (i.e. limits are only applied to QueueWorkItem() calls on
SmartThreadPool instances).