Allow recreating deleted stock items

Add deleted_at to uniqueness scope otherwise use cant recreate a stock
item on the same stock location

Fixes #3834
Prefs: don't determine persist? from .connected?

.connected? returns false until a connection is actually attempted. This
meant if the cache was empty, preferences would be set to their default
values and that would be persisted to cache.

This reverts commit 9ca8ef97fb9139a5aecd1f406b21a7fadfdca658.

Fixes #3785
prefs: don't cache fallback when not persisting

When persistence was disabled (for whatever reason), fallback values
were written to the cache if there was no existing value cached.

There is no benefit in doing this. Database lookups will not happen
without persistence being enabled, and there was potential for the
fallback values being incorrectly written to the cache.
Add maximum length validation for promotion description [Fixes #3837]
Fix admin menu spacing

admin menu spans all width and centers items since we removed horizontalNav.js from the backend we need a way to replicate the previous behavior display: table; on the parent <ul> and using display: table-cell; on chil <li> ensures we always use the whole width of the parent container and we span the children <li> accordingly using the same width across the given space

Fixes #3839

Conflicts:
	backend/app/views/spree/layouts/admin.html.erb
Bump aws-sdk to 1.20.0