Use cargo commands to update the crates.io index.

This allows us to eliminate the dependency on ureq, which in turns means
we can finally build the crate tool with Soong.

Also refactor "success_or_error" trait into a separate crate.

Also add doc strings and fix clippy lints to make Soong happy.

Test: CARGO_HOME=/tmp/blah ./crate_tool analyze-import ureq
Change-Id: Ibceb73f786533d123bb7cf0522b580fad882a36c
23 files changed