Generate target dependent bindings for Rust

* Bindings for external/sqlite are generated
  with the header file and clang flags used there.
* Saved binding files are called bindings.rs and they are
  compared with build time generated bindgen.rs files
  to check for any new changes in sqlite or bindgen.
* bindings.rs is a better file name used here.
  libsqlite3-sys has been using bindgen.rs for its
  include file. To minimize changes to libsqlite3-sys,
  we named the genrule output files bindgen.rs.
* A temporary hack in genrule calls sed to change
  u32 type to i32 to match current expectation.
  The sed output is compared (diff -U3) with manually verified
  and saved bindings.rs before use.
  Any error in sed or diff will stop a make.
  After manual verification, the diff -U3 output can be
  applied to saved bindings.rs.

Test: make with both aosp_x86_64-eng and aosp_arm64-eng
Test: make with new rusqlite and dependent packages
Test: atest -c --include-subdirs external/rust/crates/libsqlite3-sys
Change-Id: I14838c2c08f3f966e22d3846aad980c232a2f43e
8 files changed