Further refactor DataField class and related machinery.

Make it possible to pass an existing DataTable class to the DataField.
Also add `js_buttons' keyword to DataField to control custom js
buttons.

Change-Id: I4d2beb4fb3b5c3b8d2dba1413e9dc0cbcf4cae15
Merge "Further refactor DataField class and related machinery."