Call sunrise, sunset functions with the new API.

We still call them too many times, but now the optimisation for that will be pretty simple.
Return pointers from Init/Cleanup.

Rather than looking for references are asserting false when they don't exist, return pointers that can be NULL in such an error case.
Create an explicit Automaton::Lifetime class.

This will be especially useful for keeping track of unique lifetimes; we can just compare lifetimes directly.
Let a Manifest track its unique lifetimes.
Only use unique lifetimes as reported by Manifest.