Что такое `scope` в ASGI? Какие бывают типы scope, и как написать middleware, которое работает и для HTTP, и для WebSocket?