refactor and redesign the go-update API to be more flexible and easier to understand
fixes for verify functions, reorganize the APIs a little bit