Add WritePackFunction and ReadPackFunction natives

Adds type safety to CDataPack. Cells can't be read as Float anymore. Now
you're able to store a function pointer in a datapack and be sure the
pointer can't be read as a cell and a cell can't be read as a function
pointer.

1 more byte is used in the datapack data stream per entry to store the type now.