Only create promo items if order is eligible

Add a doc block to CreateLineItem.perform block to explain why it's not
suitable for Add to Cart events and explained another possible caveat

[Fixes #3275]
Don't convert taxonomy tree names to uppercase

Fixes #3241
[api] Add show action to Checkouts API
Fix race condition with product permalink generation

See this comment for a nice script on how to reproduce: https://github.com/spree/spree/issues/2714#issuecomment-19798918

Product creation in the API will now automatically be retried if an ActiveRecord::RecordNotUnique exception is thrown. This would be thrown due to the unique index which now exists on the spree_products table.

This commit also adds similar unique indexes to the orders, shipments and stock_transfers tables, although I was unable to get these showing similar behaviour to the products API in my testing.

Fixes #2714
[api] Create country+state to use in order_spec rather than hardcoding IDs
Update product_spec to check for ActiveRecord::RecordNotUnique when creating a product with duplicate permalinks, rather than a typical validation error

Conflicts:
	core/spec/models/spree/product_spec.rb
Test clicking logo in admin returns to /admin

Fixes #3221

Conflicts:
	core/spec/requests/admin/homepage_spec.rb
Remove deprecated method usage of set_table_name

This would break the core build once rails4 branch is merged into master. set_table_name is deprecated in Rails 4.

Fixes #3270
Remove confusing show_descendants configuration. Fixes #3212