model: make query_directory more straightforward

Add an enum_directory method which has the previous behavior
test:querydirectory: add test for enumerating with specific pattern
smb2: uncomment some create options

These can actually be returned in FileModeInformation
model: make query_file_info return info instead of SMB2 header
test:durable: mark tests as requiring lease cap
test:readwrite: add more tests around 0-byte writes
smb2: modify Smb2 frame to better match spec

Make f.command contain the command constant
(e.g. SMB2_NEGOTIATE) rather than the command
request/response frame, which is now stored
in _command.  This makes the command contant
show up in pretty printing.
model: include command constant in ResponseError arguments

This gives more context when a test fails with a ResponseError
model: logging enchancements

- Log some basic connection debug events even with trace off
- Include source/dest address and port in messages
pike:test: fix init_once bug

Ensure init_once is done one globally instead of once
per PikeTest subclass.  This avoids duplicate log messages.
Import proper ntstatus list

Import complete list of NTSTATUS codes as its own package
and remove them from pike.smb2
model: allow setting output buffer size in query_file_info
test:query: add tests for querying with an output buffer size of 0
smb2: fix bug encoding v2 lease requests
test:lock: add tests of write denial behavior for locks
core: optimize large enums

Change the way enums are implemented so that
validation for value enums is much faster.
This prevents a noticable pause on Status.import_items
model: propagate durable attributes from Open to Open on reconnect
test: clean up appinstanceid and persistent tests

- Only run tests on CA shares
- Add some more asserts
test:querydirectory: remove bogus assert

.. may not exist if the share is at the root of a volume
test:readwrite: assert that we get oplock