ssa.c: Implement multithreaded PR computation

1. Current implementation is based on Glib's thread pool
2. Each PRDB calculation is a separate thread
3. Multithreaded calculation is used only during SMDB update
4. Number of AL workers is number of available cores - 3
   (upstream, downstream, access). This doesn't mean that
   that there is no context switch during PR computation.
   Also, probably, upstream, downstream, and access are waiting
   for IO and don't actually spend CPU. The formula can
   be changed in the future.

Signed-off-by: Sasha Kotchubievsky <sashakot@mellanox.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>
ssa.c: Store number of al workers in access context

Signed-off-by: Sasha Kotchubievsky <sashakot@mellanox.com>
Signed-off-by: Hal Rosenstock <hal@mellanox.com>