Added named datapoint(s) support to theories, fixing #65.

This patch adds named datapoint/datapoints to theories, so that you can do:

```java
@RunWith(Theories.class)
public class DataPointNames {
    @DataPoints("regex") public static String[] regexs = new String[] { ".*", ".+" };
    @DataPoint("input") public static String input = "(";

    @Theory
    public void consistentMatcher(@FromDataPoints("regex") String regex,
                                  @FromDataPoints("input") String input) {
        boolean a = input.matches(regex);
        boolean b = Pattern.matches(regex, input);
        Assert.assertEquals(a, b);
    }
}
```

This works for all single or array valued methods/fields.

(Also refactored tests for internal elements of theory code into a matching internal test package en route, to make the two package heirarchies correspond better)