Proposal: Help prevent canister heap overflow by adding heap_memory_size to canister_status

Reading from canister_status provides this data universally for monitoring purposes. For example, canisters that currently leverage this are the ckToken minting canisters, SNS canisters, and canister monitoring applications that provide proactive email notifications like CycleOps.

The canister_status endpoint having been implemented at the protocol level also ensures that this data is always correct. For example, if I call canister_status I always know that the cycles or memory_size returned is accurate as opposed to relying on the implementation inside a specific canister that computes a result and returns it through a coded canister API.