Lazy evaluation of smartdown flow and smartdown engine in Api::Flow

We want to use smartdown flow in several contexts:
- executing the flow via the engine
- just getting the flow
- (future) just getting scenarios

Lazy evaluation of those methods means we don't do unnecessary
loading for any of those specific use cases