Fix tutorial 12 build command for Mac
Change Target::Features from a set of bitmask to a plain enumeration.

I also changed their order to group related features and added operators | and
|= to make the transition easier and simplify the notation when specifying
multiple features. I'm undecided whether this is a good idea or a more
explicit API using methods such as "set" or "add_feature" would be better.

Advantages:
- easier to reorder, add, and remove individual features
- has_feature(...) arguably easier to read and harder to get wrong

This uncovered the following bug in CodeGen_X86.cpp, which effectively
prevented packusdw instructions from being generated:

    if (!(target.features | Target::SSE41) && pattern.needs_sse_41) continue;

should probably have been

    if (!(target.features & Target::SSE41) && pattern.needs_sse_41) continue;
Merge branch 'master' into target_features
Move BitSet to Internal namespace
Explicitly mention that Features and to_string() must be updated together
Add BitSet::reset, change method names to match std::bitset
Merge branch 'master' into target_features
Merge branch 'master' of github.com:halide/Halide
Plausible-looking fix for trunk llvm.

However it segfaults inside the enginer builder.
Further investigation required.
Merge branch 'master' of github.com:halide/Halide
Merge pull request #445 from halide/target_features

Change Target::Features from bit masks to a plain enumeration.
Fixed huge unnecessary IR generation for high dimensional tuple buffers.
Fix to handle jit component going away.
resize: also compute average running time
Simplify function names in opengl.cpp

Now that everything lives in Halide::Runtime::Internal, there is no need for
long function prefixes anymore.
Remove trailing comma
Use pmaddwd for i32(i16)*i32(i16) + i32(i16)*i32(i16)
Add pmaddwd test to simd_op_check
Add correctness test for pmaddwd
More fully encapsulate Target features.

Will work for more than 64 features

Better handles passing features that are out of range.

Uses Standard C++ bitset instead of defining Halide's own.

Easily allows moving to using strings for feature names.

Avoides partial bit operation logic in Target client code. (Frankly, I
have no problem with using bit operators, but if the objection was
that they are prone to error, we should kill all of it, not just most
of it.)

Alas support would be a bit better with C++11 initializer_list
support. We might consider moving Halide::Internal::vec from Internal
to the main namespace.