feat(v2.1): add copas concurrency for concurrent update processing
Replace sequential polling loop with telegram-bot-lua's async system
(api.run + copas.loop). Each Telegram update now runs in its own copas
coroutine, so a slow plugin no longer blocks all other updates.
- database.lua: add copas.semaphore pool guard on acquire/release, fix connection leak in query/execute reconnect paths
- redis.lua: replace single global client with connection pool + semaphore, safe_call now uses method name strings
- router.lua: register api.on_* handlers, replace while-true loop with api.run(), copas-native cron (60s) and stats flush (300s)
- main.lua: use non-deprecated require('telegram-bot-lua') path
- config.lua: version bump 2.0 -> 2.1
- mock_api.lua: add async/handler stubs for test compatibility
- concurrency_spec.lua: 18 new tests for pool safety and stubs