STEP 8: Categorize dive shape

Dive shape categorization implemented.

Also, decided to move getting bottom phase boundaries to step 5 for two
reasons.
1) You already have to calculate it there, may as well save it.
2) Allows for a bug fix in get-bottom-elements because some bottom
elements may be above the ledge if they’re temporally sandwiched
between deeper elements, e.g. a W-dive.
The result of the change is step 5 now has parts a and b, which is dumb
and should be refactored.