Topography hillshade update

Implemented in backend/renderers/elevation_renderer.py:
- Physically scaled hillshade gradients using the clipped raster affine transform.
- Four-direction multidirectional hillshade (315, 45, 135, and 225 degrees).
- Soft-light blending to preserve the elevation ramp colors.
- Mask-aware edge filling to avoid a dark halo around the watershed boundary.

Current settings in backend/layers/topography.py:
- hillshade_strength = 0.20
- altitude = 45 degrees

To make the relief subtler, lower hillshade_strength to 0.20-0.25.
To make it stronger, raise it to 0.35-0.40.
Cached colored_elevation.png files will be regenerated when the topography layer is processed. Use force refresh or clear the relevant topography cache if an old image remains visible.

Tuning update:
- Gaussian smoothing sigma reduced from 0.85 to 0.50 to preserve fine ridges and drainage detail.
- Hillshade strength reduced from 0.30 to 0.20 to keep the elevation colors visible while retaining terrain depth.
