How to create a new entity that is fieldable
I am assuming that there must be a function that creates the form for you


Not quite - you need to create the form yourself with the API as normal, but you can use field_attach_form() to have the field elements added automatically. You'll also need the complementary field_attach_validate() and field_attach_submit() in your form's validate and submit handlers respectively.

Elements for your entity type's properties need to be added manually. 

The best place to look for code examples is the entity example module in the Examples project, it has all of this in it and is pretty well commented.