Initial release: HDWebmobile Product Comparison

A guest- and account-based product comparison list with a [hdcmp_compare]
shortcode table. Motivated by CWE-862/CWE-200 (broken access control
leading to information disclosure) in several competing product-comparison
plugins: a product id from a request or a stored list was rendered without
re-checking it was still a real, published, publicly visible WooCommerce
product -- surfacing drafts, trashed posts, catalog-hidden products, or
even unrelated post types.

Closed by construction: is_valid_product() is the one gate every stored id
must pass, every single time the list is read -- never assumed from
whatever was true when it was added. A product removed, unpublished, or
hidden from the catalog after being added silently disappears on the next
read, and the stored list is corrected to match (self-healing), rather
than lingering as a stale entry.

Verified via a 22-case PHP unit suite -- including a catalog-hidden
product, a draft, a non-product post type, and a nonexistent id all
correctly refused; a real self-healing test (a product added while valid,
then hidden, disappearing from both the rendered list AND the underlying
storage on the next read); the max-items cap; and reflection confirming
the validity gate takes only a product id. Plugin Check clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
