quantumlib/Cirq

Strilanc and CirqBot Polish kak output and refactor optimizer package layout (#1155)
```- Merge cirq/google/decompositions.py and cirq/decompositions.py into cirq/optimizers/decompositions.py
- Move cirq/decompositions.py into cirq/optimizers
- Fix kak decomposition not optimizing single-qubit gates it outputs
- Refactor MergeSingleQubitGates to take flexible arguments
- Refactor cirq.google.MergeRotations into cirq.merge_single_qubit_gates_into_phased_x_z using cirq.MergeSingleQubitGates
- Simplify imports in several cirq/optimizers files
- Use `Callable[[Circuit], None]` instead of `cirq.Optimizer` in a few places (will eventually delete `cirq.Optimizer`, which is a contentless class)
- Delete some unused decomposition methods (controlled operation to gates)

Example code:

```python
import cirq
c = cirq.Circuit.from_ops(cirq.CNOT(*cirq.LineQubit.range(2)))
print(c)
```

Before:

```
0: ───Z^0.75────X^0.5────S^-1───Y^-0.5───@───S^-1───Y^0.5───Y^0.5─────Z^-0.75───
│
1: ───X^-0.25───Y^-0.5───────────────────@───S^-1───Y^0.5───X^-0.25─────────────
```

After:
```
0: ───────────────────────@──────────────────────
│
1: ───PhasedX(-0.5)^0.5───@───PhasedX(0.5)^0.5───
```

Still not perfect; the `PhasedX` is so close to a `Y` that it should probably round. But overall fine.```
Latest commit 278f958 Nov 20, 2018
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
__init__.py Jun 13, 2018
bcs_mean_field.py Nov 21, 2018
bell_inequality.py Oct 19, 2018
bernstein_vazirani.py Jul 9, 2018
examples_test.py Oct 2, 2018
grover.py Jul 12, 2018
hello_qubit.py Jul 15, 2018
phase_estimator.py Oct 25, 2018
place_on_bristlecone.py Nov 2, 2018
quantum_fourier_transform.py Sep 19, 2018