Don't show type if product is hidden

If all products with a `type` are hidden, it still shows up in the `for type in collections.all_types` list.

Thoughts on this approach for making sure it doesn't show up in the list?

Steps during `for type in collection.all_types` loop:
1. Set a flag `hidden = true` - default to hiding the `type`
2. Loop through _all_ products
3. If the current product's `type` = current `type, continue
4. If the product is available, set the hidden flag to false

Potential issues, I don't have the answers to:
1. Is there a performance hit if we loop through all products like this?
2. Is there any case this would hide a type by accident? (maybe because of collections.all_products pagination limit)
3. Should Timber take this into account, or put the onus on the merchant?
4. I can't figure out a similar approach to hiding tags for hidden products.

@carolineschnapp @fredryk