signals: fix slot didn't disconnect from signals
signals: more efficient & customizable signal implementation
signals: make default empty bs.signal.execute() in Python

If slot connected to bs.signal is deleted in Python, smart pointer to
base bs_slot class still lives inside signal. So, when signal is fired,
no exception is thrown.
smart_ptr: return true mt-locking abilities even if BS_DISABLE_MT_LOCKS is set

Change the way BS_DISABLE_MT_LOCKS is working: return mutexes and
real object locking in explicit lock() calls and lsmart_ptr. Leave the
ability to bypass constness of pointed object, so all existing code
should build and work fine.
signal: lock slot during execution

This should properly resolve situation when multiple signals
simultaneousely invoke single slot.