Update cassettes
Implement ghost load pattern for Plan objects

Plans fetched using the Plan.find_all_by_service_type method don't have
all the information that's available by fetching each plan one by one
from the API.

To keep the performance benefit of a single API call while still
allowing seamless access to all of a plan's attributes, I've used the
ghost load pattern to fetch missing details when necessary.

If a method is called on a Plan object that's known to be one of these
missing attributes, the Plan object will fetch the full set of
attributes from the API and update itself in-place. Keeping track of
whether or not this API call has been performed means that we only make
it once, at most.