problems with starting in grace period #77087 and #77093

Could not start reservations with max length early.
Could not start restricted instruments early.
adjust reservation validations to handle starting reservation during grace period

#77087 and #77093
Could not start reservations with max length early.
Could not start restricted instruments early.
notifications always sending when acting as #77105
Shared calendar instruments cannot share relay port number #77101
Merge pull request #77 from tablexi/notification-toggle-77105

notifications always sending when acting as #77105
pull grace period features into reservation

Make grace period duration a setting
fix spec that needs time to be frozen
ensure that unique ip/port constraint on Relay does not find self
make in_grace_period? method clearer
Merge pull request #75 from tablexi/create-and-start-77087-77093

Problems starting reservations in grace period #77087 and #77093
Merge pull request #78 from tablexi/shared-calendar-relay-port-77101

Shared calendar instruments cannot share relay port number #77101
remove port/ip uniqueness validation test from PowerRelay specs

already checked in models/relay_spec.rb
Update query syntax

Pricing model changes (Task #73569)
get old instrument PP out of the way, introduce new one

Pricing model changes (Task #73569)
remove duplicate block

Pricing model changes (Task #73569)
upgrade shoulda-matchers

Pricing model changes (Task #73569)
Revert "get old instrument PP out of the way, introduce new one"

This reverts commit c4197c01b219aac2ea35af43432cb9c3cd989602.
use some real Hash

Pricing model changes (Task #73569)
widen price_policies.usage_* columns; add products.reserve_interval

Pricing model changes (Task #73569)
validate reserve_interval

Pricing model changes (Task #73569)