Type checking of string interpolation using %

This PR adds type checking of [printf-style string formatting](https://docs.python.org/3.4/library/stdtypes.html#printf-style-string-formatting) and fixes #469.

# Simple examples

For each conversion specifier present in the formatting string, the replacement tuple must contain a replacement of the right type.

```python
'%d' % 1
'%d' % 's'  # E: Incompatible types in string interpolation (expression has type "str", placeholder has type "int")
'%d %d' % 1  # E: Not enough arguments for format string
'%d %d' % (1, 2)
'%d %d' % (1, 2, 3)  # E: Not all arguments converted during string formatting
t = 1, 's'
'%d %s' % t
'%s %d' % t  # E: Incompatible types in string interpolation (expression has type "str", placeholder has type "int")
'%d' % t  # E: Not all arguments converted during string formatting
```

# Variable minimum field width and precision

A conversion specifier may contain a minimum field width (`%3d`) and a precision (`%.3f`). Both may be a `*`. When a `*` is specified, the width or precision is taken from the replacement tuple and must be and integer. Both the presence and type of these are checked:

```python
'%.*f' % 3.14 # E: Not enough arguments for format string
'%.*f' % (4, 3.14)
'%.*f' % (1.1, 3.14) # E: * wants int
'%*.*f' % (4, 2, 3.14)
'%*%' % 4 # OK
```

(The behaviour of the last example depends on the version of Python. On my Mac, Python 3.4 just prints a `%`, while Python 2.7 prints '   %'. However, both expect an `int` in the replacement tuple, so type checking is identical.)

# Key mapping

A conversion specifier may contain a key mapping, like the `foo` in `%(foo)s`. Specifiers with key mappings may not be mixed with specifiers without mappings. In addition, when key mappings are used, the minimum field with and precision components must not be a star. These errors are checked for:

```python
'%(a)d %d' % 1  # E: String interpolation mixes specifier with and without mapping keys
'%(b)*d' % 1  # E: String interpolation contains both stars and mapping keys
'%(b).*d' % 1  # E: String interpolation contains both stars and mapping keys
```

When key mappings are used, the replacement must be a dictionary. When a dictionary expression is supplied and all keys are string literals, then also the presence and type of the mapping is checked:

```python
'%(a)d' % {'a': 1, 'b': 2, 'c': 3}
'%(q)d' % {'a': 1, 'b': 2, 'c': 3}  # E: Key 'q' not found in mapping
'%(a)d %(b)s' % {'a': 's', 'b': 1}  # E: Incompatible types in string interpolation (expression has type "str", placeholder has type "int")
```


I wasn't sure about this, but `floor` returning a float is a pretty solid reason to accept also floats.