Write integration tests for fetch and query commands

## Background
Integration tests validate the full command pipeline end-to-end: fetch → list → show → search → schemas → tags. These tests use assert_cmd to run the binary, mockito for HTTP mocking, and the test fixtures/helpers from the previous bead.

## Approach
Create tests/integration/ test files:

**fetch_test.rs:** test_fetch_success (local file), test_fetch_invalid_json, test_fetch_network_error, test_fetch_alias_exists, test_fetch_force_overwrites, test_fetch_yaml_file, test_fetch_stdin

**list_test.rs:** test_list_all_endpoints, test_list_filter_by_method, test_list_filter_by_tag, test_list_path_regex, test_list_invalid_regex_error, test_list_combined_filters, test_list_default_limit, test_list_all_flag

**show_test.rs:** test_show_endpoint_details, test_show_multiple_methods_error, test_show_expand_refs

**search_test.rs:** test_search_basic, test_search_exact, test_search_case_sensitive, test_search_in_paths_only, test_search_invalid_field_error

**schemas_test.rs:** test_schemas_list, test_schemas_show, test_schemas_name_filter

**aliases_test.rs:** test_aliases_list, test_aliases_rename, test_aliases_delete, test_aliases_set_default

## Acceptance Criteria
- [ ] All fetch tests pass (success, errors, force, YAML, stdin)
- [ ] All list tests pass (filters, sorting, limits)
- [ ] All show tests pass (details, ref expansion, method disambiguation)
- [ ] All search tests pass (basic, exact, case-sensitive, field scoping)
- [ ] Schema and alias tests pass
- [ ] All tests are hermetic (SWAGGER_CLI_HOME in tempdir)
- [ ] No real network calls (local fixtures or mockito)

## Edge Cases
- **Test isolation:** Each test MUST use its own tempdir for SWAGGER_CLI_HOME. Tests running in parallel must not share cache state.
- **CI binary not built:** Tests use assert_cmd which builds the binary. Ensure Cargo.toml has the right [[bin]] target.
- **Mockito port conflicts:** Each test needing a mock server should use mockito::Server::new() which picks a random port, not a hardcoded port.
- **Fixture file paths:** Use canonicalized absolute paths for local file fetch tests. Relative paths may break depending on test runner CWD.

## Files
- CREATE: tests/integration/fetch_test.rs
- CREATE: tests/integration/list_test.rs
- CREATE: tests/integration/show_test.rs
- CREATE: tests/integration/search_test.rs
- CREATE: tests/integration/schemas_test.rs
- CREATE: tests/integration/aliases_test.rs

## TDD Anchor
Write all tests listed above. Many will already exist as unit tests in individual command beads — this bead consolidates them as proper integration tests using assert_cmd binary invocation.
VERIFY: `cargo test --test '*'`

## Dependency Context
Uses test fixtures and helpers from bd-lx6 (Create test fixtures and integration test helpers). Tests the commands implemented in all query/management beads.


Implement schemas command with list and show modes

## Background
The schemas command lets users browse and inspect OpenAPI component schemas. Listing is index-backed (fast). Showing a specific schema loads raw.json via schema_ptr (same pattern as show command). Supports --name regex filter and --expand-refs with cycle detection.

## Approach
Implement src/cli/schemas.rs with SchemasArgs and execute():

**SchemasArgs:** alias (Option<String>), name (Option<String> — regex filter, invalid → USAGE_ERROR), list (bool, default action), show (Option<String> — schema name), expand_refs (bool), max_depth (u32, default 3).

**List mode (default):** Load index, filter schemas by --name regex, output names. Robot: data.schemas[] with name. Human: bulleted list with title.

**Show mode (--show Name):** Find schema in index by exact name match. Load raw via schema_ptr. If --expand-refs, use the same ref expansion from show command (src/core/refs.rs). Output full schema JSON.

## Acceptance Criteria
- [ ] `schemas petstore` lists all schema names (sorted by name)
- [ ] `schemas petstore --name ".*Pet.*"` filters by regex
- [ ] Invalid --name regex returns USAGE_ERROR
- [ ] `schemas petstore --show Pet --robot` returns full Pet schema JSON
- [ ] --expand-refs works on schema details
- [ ] Schema not found returns clear error
- [ ] List mode never loads raw.json
- [ ] Show mode validates raw_hash

## Edge Cases
- **Empty schemas (spec with no components/schemas):** Return ok:true with data.schemas as empty array.
- **Schema name with special characters:** Some schema names contain dots or hyphens (e.g., "Pet.Response"). Regex --name filter must handle these.
- **--show with non-existent schema name:** Return clear error with suggestion listing available schema names.
- **schema_ptr doesn't resolve in raw.json:** Return CacheIntegrity error (corrupted index). Should not happen if index was built correctly, but defend against it.

## Files
- MODIFY: src/cli/schemas.rs (SchemasArgs, execute)
- MODIFY: src/output/robot.rs (add output_schemas_list, output_schemas_show)
- MODIFY: src/output/human.rs (add output_schemas_list, output_schemas_show)

## TDD Anchor
RED: Write `test_schemas_list` — fetch petstore, run schemas --robot, assert data.schemas is array with correct count.
GREEN: Implement list mode.
VERIFY: `cargo test test_schemas_list`

## Dependency Context
Uses ref expansion from bd-1dj (show command, src/core/refs.rs). Uses CacheManager from bd-3ea.