This adds fairly comprehensive guidance to the solana-program crate docs.
Topics covered:
- The difference between solana-program and solana-sdk
- Where to find examples in the spl
- How solana programs differ from most rust programs
- How to conventionally define a solana program
- On-chain vs off-chain targets
- Core data type descriptions
- Serialization strategies
- CPI
- Native programs, distinction between different kinds, where to find them
- Sysvars
- Limitations to the Solana version of Rust std
I also added some docs to the log and sysvar modules.
After this I intend to work top-down making sure all the links in the crate docs lead to useful information, modules all have short descriptions, etc.