Goals:
- Improve performance
- Avoid copying the entire data-block when possible
- Make decisions about which attributes to copy when changing curves more generic
- Provide high-level ways to copy data between curve points
- Optimize for the common cases of a single type and full selections