Remove unused legacy code
Merge branch 'rm-legacy' into develop
Refactor content exclusion into separate methods

* Use instance property to persist cache
Benchmarking exclusion methologies (string-based vs regex)

* Regex usually 10-55% faster
Benchmarking exclusion methologies (regex vs regex_replace)

* Regex usually 30-40% faster
Finalize exclusion parser refactoring (regex-based)

* Remove debug code
* Save default placeholder (non-indexed)
* Reactivate restoration functionality
Cache excluded content using index

So content is restored properly
Restore excluded content (by key)

* Search content for placeholder
* Parse placeholders for key attribute
* Use key to restore respective content
Optimize: Normalize shared excluded values

* Save to `exclude` property
* Placeholder, Tags, cache, etc.
Cleanup: Group exclude methods together
Group excluded content in cache
Merge branch 'opt-exclude-cache-index' into opt-exclude
Merge branch 'opt-exclude' into develop
Exclude/Restore content via filter

Prepare for hook-based grouping
Refactor content grouping (hook-based)

* Move grouping code to separate methods
* Use filter to call group exclude/restore methods
* Restore original `gallery_wrap_callback()` functionality (unnecessary)
Switch gallery wrapper to shortcode style (`[slb_group]`)
Add: Shortcode utility methods `do_shortcode()`, `make_shortcode()`
Refactor gallery grouping to handle any shortcode

* Update method names (no longer gallery-specific)
* Use shortcode utility methods to group shortcodes
* Add hooks to filter shortcodes to group
Util: Refactor element building

* Add: `build_element()`
* Refactor: `build_html_element()` uses `build_element()`
* Refactor: `make_shortcode()` uses `build_element()`
Util: `build_element()` - Stop merge extra attributes (unnecessary)