BSON equality and diffing, expanded BsonPath, Java driver, and improved documentation

### BSON

- Added `equals` and `hashCode` implementations for all BSON types, to allow checking if two BSON documents are identical (a073e815, !176)
- Added `BsonDocumentReader.names` to iterate the field names (d26da4fb, !184)
- Added `BsonArrayReader.indices` and `.size` to iterate over elements (ea9e5817, 3b354010, !184)
- The official and multiplatform implementations are now tested with the same suite (bba1d7bf, !173)
- Fixed broken documentation links in `Bson` and `BsonArray` (d265b02b)
- Improved the documentation of `BsonType` (3da19f42, !185)
- Explicitly document that `BsonType.ordinal` shouldn't be used (4ef5848e, !185)

### BSON (official)

- Fixed `BsonValueReader.read` when reading a primitive JVM type (fbdfd880)
- Fixed `BsonValueReader.toString()` which did not return a JSON representation (19a34ea5)

### BSON (multiplatform)

- Fixed thread safety issue in `Bson.eager()` and `BsonArray.eager()` (#102, !179)

### BsonPath

- Renamed the parsing method from `BsonPath.parse("$.a")` to `BsonPath("$.a")` (30a09f83, #93, !165)
- Add `Bson.select("$.a")` as a shorthand for `Bson.select(BsonPath("$.a"))` (a7b68c1a, #93, !165)
- Add support for `BsonPath.all`/`$.*` (5e8db0f2, #93, !165)
- Add support for `BsonPath.sliced`/`$[1:5:2]` (10f2c1c5, #93, !165)
- Add support for `BsonPath[-1]`/`$[-1]` (01a0781f, #93, !165)
- Add support for `BsonPath.any()`/`$["foo", "bar"]` (895c2fda, #93, !182)
- Improve testing of BsonPath expressions

### BSON diff

- Add `doc1 diff doc2` to display a human-readable difference of two BSON values, primarily intended for tests (#98, !177)

### Java driver

- Fixed publishing issue. The Java module should now be published alongside all other modules (!180)

### Documentation

- Improved the module-level documentation for all modules (#88, !181)