Custom product data

This PR is for merging custom product data into the custom user data branch (https://github.com/dimagi/commcare-hq/pull/4292) that it was branched off of. Ultimately these are going live together, but this PR is being made to make review easier.
This seems like a function that could (should?) be tested. However, in it's current location it would likely be hard to test. Does it make sense to restructure to make it easier to test (and also add tests)?