This missed last commit
Safely set gift price to zero

Previously, the gift price is set by filtering `woocommerce_get_price`
which could cause an error when the cart is intentionally added by
product which is assigned as gift before checkout.

Now, the process is a bit different:
- adding cart meta data using add_to_cart() method
- filtering cart item during `woocommerce_calculate_totals` based on
the cart meta data added by plugin, then set to zero if true
Better file structure for checkout class