Clean up & allow function pointers to be compared for equality natively

Clean up & allow function pointers to be compared for equality natively

See commits for details.