Improved uploadable GPU object handling (closes #23)

I still need to write tests for these changes.