py: Implement more binary ops for viper emitter.

This included a bit of restructuring of the assembler backends.  Note
that the ARM backend is missing a few functions and won't compile.
diff --git a/py/asmarm.h b/py/asmarm.h
index e0c8efe..d977102 100644
--- a/py/asmarm.h
+++ b/py/asmarm.h
@@ -89,7 +89,8 @@
 void asm_arm_cmp_reg_i8(asm_arm_t *as, uint rd, int imm);
 void asm_arm_cmp_reg_reg(asm_arm_t *as, uint rd, uint rn);
 void asm_arm_less_op(asm_arm_t *as, uint rd, uint rn, uint rm);
-void asm_arm_add_reg(asm_arm_t *as, uint rd, uint rn, uint rm);
+void asm_arm_add_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm);
+void asm_arm_sub_reg_reg_reg(asm_arm_t *as, uint rd, uint rn, uint rm);
 void asm_arm_mov_reg_local_addr(asm_arm_t *as, uint rd, int local_num);
 
 void asm_arm_bcc_label(asm_arm_t *as, int cond, uint label);